构造函数模式概念
构造函数用于创建特定类型的对象–不仅声明了使用的对象,构造函数还可以接受参数以便第一次创建对象的时候设置对象的成员值。你可以自定义自己的构造函数,然后在里面声明自定义类型对象的属性或方法。
在JavaScript里,构造函数通常认为用来实现实例的,JavaScript没有类的概念,但是有特殊的构造函数。通过new关键字来调用自定义的构造函数在构造函数内部,this关键字引用的是新创建的对象。
Show code
需求:我年纪大了,想有个小孩,1.这个小孩是我自己私有的,不要对谁都叫爸爸;2.我可能还要二胎,但是第二个小孩,但是我还没有想好这个小孩的名字。
|
|
Review一下
- 函数名首字母大写,用来区分构造函数和普通函数
|
|
- 强制使用new,如果不用new,会把函数中this指到全局对象window上,如
var baby=Baby()中baby 的type 是undefined,用window对象却可以调用构造函数Baby中的方法
|
|
- 有的人可能会这样写
this.create= function () { return "小孩的名字是"+this.name+"小孩的体重是"+this.weight;};,这样写有一个问题,就是create()在每次创建对象的时候都重新定义,最好的方法是让所有baby类型的实例都共享这个create()方法, 还有一种实现更好的办法,在原型模式中会聊到
|
|
By the way
JavaScript里有3中内置包装构造函数:Boolean(), String(), Number()
只有在想保留数值状态的时候使用这些包装函数:
|
|
|
|