猿问

关于javascript的delete问题?

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;已经把指向classA的引用删掉了,为什么objB.sayColor();
还能起作用

大话西游666
浏览 921回答 4
4回答

GCT1015

JAVASCRIPT 里的这些东西却实挺头痛的this.newMethod = ClassA;this.newMethod(sColor); // 主要是这一句,这一句相当于调用了 CLASSA 的构造函数,但是调用的相对应的对象是 CLASSB, 所以 CLASSA&nbsp;构造函数里设置的 THIS.FUNCATION 等全被指到 CLASSB 上面了。delete this.newMethod 只是从 CLASSB 上删除掉 NEWMETHOD 这个方法而已,但是 CLASSA 上面的方法已经被复制到 CLASSB 上了,所以删除这个是不会受影响的
随时随地看视频慕课网APP

相关分类

WebApp
我要回答