昨天遇到的一個(gè)問題:
對(duì)于兩個(gè)普通的對(duì)象a,b
var a = {
foo:1,methodA:function(){ console.log(this.foo);}
}
var b = {
bar:2,methodB: function(){ console.log(this.bar); }
}
可以不考慮執(zhí)行環(huán)境的兼容性,實(shí)現(xiàn)下面要求:
1 執(zhí)行a.methodA()輸出1;
2.執(zhí)行a.methodB()輸出2;
3.執(zhí)行b.bar=3;a.methodB()輸出3
上面的就是題目,首先想到的就是繼承,a繼承b,可以直接調(diào)用b的methodB方法。在題目的基礎(chǔ)上,我會(huì)這么實(shí)現(xiàn)的:
function A(){
this.foo = foo; this.methodA = function(){ console.log(this.foo); } B.call(this)//實(shí)現(xiàn)繼承
}
function B(){
this.bar = bar; this.methodB = function(){console.log(this.bar); }
}
var a = new A();
var b = new B();
執(zhí)行下面的代碼:
a.methodA()//輸出1;
a.methodB()//輸出2;
b.bar=3;a.methodB() //仍輸出2
很顯然不符合要求。
求大神告知產(chǎn)生的原因和解決的方法。 難道是我一開始就理解的不正確嗎?