这个主要做法就是,通过检查某个应该存在的方法是否有效,是否需要初始化原型。这个是通过构造函数中初始化原型,可以保存同时使用构造函数和原型的优点。
代码演示:
function Person(name,age,job){
this.name=name;
this.age=age;
this.job=job;
if (typeof this.sayName != "function") {
Person.prototype.sayName=function(){
alert(this.name);
}
}
}
var friend =new Person("Nicholas",21,"Software Engineer") ;
friend.sayName();
在这个代码中,只有sayName()方法不存在的时候,才会将它添加到原型中,这段代码只会初次调用构造函数的时候才会执行。
但在使用动态原型模式的时候,不能使用对面字面量重写原型。
如果在已经创建实例的情况下重写原型,那么会切断现有实例与新原型之间的联系。