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