function ClassA(sColor) {this.color = sColor;this.sayColor = function () {alert(this.color);};}function ClassB(sColor, sName) {this.newMethod = ClassA;this.newMethod(sColor);delete this.newMethod;this.name = sName;this.sayName = function () {alert(this.name);};}var objA = new ClassA("blue");var objB = new ClassB("red", "John");objA.sayColor(); //輸出 "blue"objB.sayColor(); //輸出 "red"objB.sayName(); //這個代碼 塊function ClassB(sColor, sName) {this.newMethod = ClassA;this.newMethod(sColor);delete this.newMethod;<<<<<<=====中 delete this.newMethod;已經(jīng)把指向classA的引用刪掉了,為什么objB.sayColor();還能起作用
4 回答

GCT1015
TA貢獻(xiàn)1827條經(jīng)驗 獲得超4個贊
JAVASCRIPT 里的這些東西卻實挺頭痛的
this.newMethod = ClassA;
this.newMethod(sColor); // 主要是這一句,這一句相當(dāng)于調(diào)用了 CLASSA 的構(gòu)造函數(shù),但是調(diào)用的相對應(yīng)的對象是 CLASSB, 所以 CLASSA 構(gòu)造函數(shù)里設(shè)置的 THIS.FUNCATION 等全被指到 CLASSB 上面了。
delete this.newMethod 只是從 CLASSB 上刪除掉 NEWMETHOD 這個方法而已,但是 CLASSA 上面的方法已經(jīng)被復(fù)制到 CLASSB 上了,所以刪除這個是不會受影響的
- 4 回答
- 0 關(guān)注
- 968 瀏覽
添加回答
舉報
0/150
提交
取消