日期:2014-05-16  浏览次数:20366 次

js原型式继承

function A() {
this.name = "a";
}
function B() {
this.age = 30;
}
B.prototype = new A();

var b1 = new B();
var b2 = new B();
alert(b1.name);
alert(b2.name);


这样继承,如果改变A的name值,同时b1和b2的name会同时改掉,如何用原型式继承,让继承来的属性又保持独立呢
------解决方案--------------------
引用:
打个比方嘛haha

但你这个比分没任何意义啊 他属性改两个实例化的值也改变很正常啊 除非你在B对象中重新定义个属性
------解决方案--------------------
function A() {
    this.name = "a";    
}
function B() {
var k,value;
for( k in this){
value = this[k];
if(typeof value == 'string'){
this[k]=value;
}
}
    this.age = 30;    
}
B.prototype = new A();
 
var $b1 = new B();
var $b2 = new B();

------解决方案--------------------
你要独立的话干嘛还要继承呢?
应该用拷贝吧



------解决方案--------------------
如果不想使用A的属性,就在b中定义自己的name,就不会去原型方法中找寻这个name属性了。