解决原型重新的问题——通过组合构造函数和原型来创建对象

说明:把属性在构造函数中定义,把方法在原型中定义

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);

}

}

 

}

上面的方式叫做动态原型

 

posted on 2013-07-02 10:17  菜鸟半只  阅读(182)  评论(0)    收藏  举报

导航