6.2.5动态原型模式

来源:互联网 发布:sql server培训费用 编辑:程序博客网 时间:2024/06/13 02:58

有其他OO语言经验的开发人员在看到独立的构造函数和原型时,很有可能会感到非常困惑。动态原型模式正是解决着这个问题,他把所有信息都封装到了构造函数中,而通过在构造函数中初始化原型(仅在必要的情况下,)又保持了同时使用构造函数的原型和优点。换句话说,可以通过检查某个应该存在的方法是否有效,来决定是否需要初始化原型。来看一个例子。

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 friends=new Person("Nicholas",29,"Software");
friend.sayName();

注意构造函数代码中加粗的部分。这里只在sayName()方法不存在的情况下,才会将它添加到原型中。这段代码只会在初次调用构造函数时才会执行。此后,原型已经初始化,不需要再做什么修改了。不过要记住,这里对原型所做的修改,能够立即在所有实例中得到反映

0 0
原创粉丝点击