关于原型继承的三种方法

1.利用对象的动态特性添加成员


varo={};

o.name=‘jim’

varPerson=function(){};

Person.prototype.sayHello=function(){

alert(“xxxx")

}

//此时原型对象是对象,可以利用动态特性随时添加成员

//添加的成员都会被构造函数的对象所继承

2.利用覆盖原型对象


varPerson=function(){};

Person.prototype={

say:function(){},

said:function(){}

constructor:Person;//添加constructor

}

如果使用这种方法会覆盖掉原有的prototype方法(包括constructor)  指向为构造函数的constructor

一定要给新对象添加一个constructor属性

3.利用组合式继承添加属性

利用extend方法(在我之前的博客中有)

extend()


varPerson=function(){};

Person.prototype={

say:function(){},

said:function(){}

constructor:Person;//添加constructor

}

Person.extend=function( msg ){

for(varkinmsg){

Person.prototype[k]=msg[k]

}

}

原文参考入口三种方法

你可能感兴趣的:(关于原型继承的三种方法)