寄生构造函数模式
寄生构造函数模式的基本思想是创建一个函数,该函数的作用仅仅是封装创建对象的代码,然后再返回
新创建的对象。但从表面来看,这个函数又很像是典型的构造函数。以例1来进行说明:
例1:
function Person(name,age){
var o=new Object();
o.name=name;
o.age=age;
o.sayName=function(){
alert(this.name);
}
return o;
}
var friend=new Person("Tim",19,"Doctor");
friend.sayName();//Tim
在例1中,Person函数创建了一个新对象,并以相应的属性和方法实例化该对象,然后又返回了这个对象。
除了使用new操作符并把使用的包装函数叫做构造函数之外,这种模式跟工厂模式其实是一模一样的。构
造函数在不返回值的情况下,默认会返回新对象的实例。而通过在构造函数的末尾添加一个return语句,可
以重写调用构造函数返回的值。
注意:关于寄生构造函数模式,其返回的对象与构造函数或者构造函数的原型属性之间没有关系。即
构造函数返回的对象与在构造函数外部创建的对象并没有什么不同。也不能依赖instanceof操作符来确定对象类型。