动态原型模式:
动态原型模式将所有的信息都封装在构造函数中,通过在构造函数中初始化原型(仅在必要的条件下),又保持
了同时使用构造函数和原型的优点。即使可以通过检查某个应该存在的方法是否有效,来决定是否需要初始化原型。
例1:
function Person(name,age){
this.name=name;
this.age=age;
if(typeof this.getName!="function"){ //如果需要使用getName方法,则重新定义
Person.prototype.getName=function(){
alert(this.name)
}
}
if(typeof this.getAge!="function"){
Person.prototype.getAge=function(){
alert(this.age);
}
}
}
var person1=new Person("Tom",18);
person1.getName();
person1.getAge();
alert(person1 instanceof Person);