为了账号安全,请及时绑定邮箱和手机立即绑定

关于javascript的delete问题?

关于javascript的delete问题?

大话西游666 2019-02-13 14:10:20
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();还能起作用
查看完整描述

4 回答

?
GCT1015

TA贡献1827条经验 获得超4个赞

JAVASCRIPT 里的这些东西却实挺头痛的

this.newMethod = ClassA;
this.newMethod(sColor); // 主要是这一句,这一句相当于调用了 CLASSA 的构造函数,但是调用的相对应的对象是 CLASSB, 所以 CLASSA 构造函数里设置的 THIS.FUNCATION 等全被指到 CLASSB 上面了。

delete this.newMethod 只是从 CLASSB 上删除掉 NEWMETHOD 这个方法而已,但是 CLASSA 上面的方法已经被复制到 CLASSB 上了,所以删除这个是不会受影响的

查看完整回答
反对 回复 2019-03-22
  • 4 回答
  • 0 关注
  • 920 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信