通常,在前述的几种模式都不适用的情况下,可以适用寄生构造函数模式。这种模式基本思想是穿件一个函数,改函数作用是仅仅封装穿件对象的代码,然后再返回新创建的对象;但从表面上看,这个函数又很想是典型的构造函数。
function Person(name,age,job){
var o=new Object();
o.name=name;
o.age=age;
o.job=job;
o.sayName=function(){
alert(this.name);
}
return o;
}
var friend = new Person("Nicholas", 29, "Software Engineer");
friend.sayName(); //"Nicholas"
在这个例子中,Person函数创建了一个新对象,并以相应的属性和方法初始化该对象,然后又返回这个对象。除了使用new操作符并把使用的包装函数叫做构造函数之外,这个模式跟工厂模式其实是一模一样。