解决原型重新的问题——通过组合构造函数和原型来创建对象
说明:把属性在构造函数中定义,把方法在原型中定义
function Person(name,age,friends){
this.name=name;
this.age=age;
this.friends=friends;
}
Person.prototype = {
constructor:Person,
say:function(){
alert(this.name+"\t"+this.friends);
}
}
var p1 = new Person("Amos",22,["ecplise","tomcat"]);
p1.friends.push("new friend");
pa.say(); // Amos eclipse tomcat new friend
var p2 = new Person("Ada",20,["ecplise","tomcat"]);
p2.say(); ada eclise tomcat;
为了让定义的方式更加符合java规范,就把定义方法的原型放置到Person的构造函数中
function Person(name,age,friends){
this.name=name;
this.age=age;
this.friends=friends;
//Person.prototype = {} 这个地方不可以这样定义方式了。因为一旦这样就会产生一个新的构造函数。并且指向它
if(!Person.prototype.say){ //判断Person中是否存在say。如果不存在就创建
Person.prototype.say = function(){
alert(this.name+"\t"+this.friends);
}
}
}
上面的方式叫做动态原型
浙公网安备 33010602011771号