【问题标题】:How to delete an object from memory using jQuery/Javascript? [duplicate]如何使用 jQuery/Javascript 从内存中删除对象? [复制]
【发布时间】:2013-05-14 15:15:03
【问题描述】:

我正在创建一个应用程序,其中有一个用于创建客户的页面。为此,我编写了以下代码。

customer=new MobileApp.CustomerViewModel(); //for creating new customer

我想删除这个对象。我该怎么做??

【问题讨论】:

  • 删除变量名;
  • 请注意,JavaScript 的 delete 关键字不是用于从内存中删除内容,它仅用于从对象中删除属性。 Read the docs。请注意,delete x; 将尝试删除存在于全局命名空间对象中的属性 x
  • 是全局变量还是局部变量

标签: javascript jquery


【解决方案1】:

递归销毁对象,如下所示。用 chrome heap 快照测试了 javascript 对象在内存中被清除

function destroy(obj) {
    for(var prop in obj){
        var property = obj[prop];
        if(property != null && typeof(property) == 'object') {
            destroy(property);
        }
        else {
            obj[prop] = null;
        }
    }
}

【讨论】:

    【解决方案2】:
    delete customer;
    

    了解delete

    delete 运算符从对象中删除属性。由于customer是全局对象的属性,不是变量,所以可以删除

    注意:customer 应该是全局的

    customer=new MobileApp.CustomerViewModel();
    delete customer; // Valid one
    
    var customer1=new MobileApp.CustomerViewModel();
    delete customer1; // Not a valid one
    

    示例Fiddle

    【讨论】:

    【解决方案3】:

    设置 customer = null 将使垃圾收集器启用此功能,因为没有对该对象的其他有效引用。

    【讨论】:

      猜你喜欢
      • 2011-03-24
      • 2011-03-28
      • 2011-04-28
      • 2016-02-28
      • 2019-07-11
      • 2011-07-04
      • 1970-01-01
      相关资源
      最近更新 更多