【问题标题】:javascript: How to destory class Object and make calling variable undefined?javascript:如何销毁类对象并使调用变量未定义?
【发布时间】:2020-09-28 01:59:49
【问题描述】:

如何正确销毁 MyClass 的类对象并使调用变量 myObj = undefined?

var namespace = {};
namespace.instance = {};

function MyClass(name) {
  this.name = name;
  
  this.destroy = function() {
    delete namespace.instance[name];
  }
  
  namespace.instance[name] = this;
}

var myObj = new MyClass('test');
console.log(myObj);
myObj.destroy();
console.log(myObj) // make this undefined;

【问题讨论】:

    标签: javascript php html jquery css


    【解决方案1】:

    在 JavaScript 中,如果不将 undefined 显式分配给变量名,则无法使变量指向 undefined。做完之后

    var myObj = new MyClass('test');
    

    制作myObjundefined的唯一方法就是做

    myObj = undefined;
    

    之后。

    仅给定一个对象的引用(例如在destroy 方法中),没有办法打破对对象的外部myObj 引用;在destroy 中你所能做的就是改变对象,但它仍然是一个对象。您正在寻找的东西在 JS 中是不可能实现的。

    【讨论】:

    • 你能以某种方式在destroy方法中删除它或者使这个==未定义并返回它
    • 函数的调用者仍然必须显式地重新分配它,它看起来真的很奇怪。myObj = myObj.destroy(); 在这种情况下,调用者最好停止使用myObj并让垃圾收集器在不再关闭它时自动处理它。
    • 所以如果最好在 destory 中返回 true 然后使 myObj == undefined
    • 我不会从destroy 返回任何东西。你可以做myObj = undefined(注意:赋值,而不是比较),但如果没有任何东西关闭它,如果你在完成后停止使用变量会更容易(并且代码会更清晰)。
    猜你喜欢
    • 2012-05-02
    • 1970-01-01
    • 2014-12-23
    • 1970-01-01
    • 2012-04-24
    • 2014-08-27
    • 1970-01-01
    • 1970-01-01
    • 2012-12-10
    相关资源
    最近更新 更多