javascript - 如何删除带有原型(prototype)的对象

标签 javascript prototype

我正在尝试删除使用原型(prototype)对象创建的对象。删除似乎不起作用。删除调用后,该对象仍然存在...... 该对象是通过调用创建的:

utils.createWithProto = function (o) {
    function F() {}
    F.prototype = o;
    return new F();
};

下面是用来创建对象的。

// Create a new object using DashboardControl as the prototype
// A unique ID is set in newControl.config.controlId if it was not passed in config
var proto = new DashboardControl(config);
var newControl = Utils.createWithProto(proto);

// Create a collection of Volume models
newControl.volumeCollection = new VolumeCollection();
newControl.volumeCollection.init(newControl.config);

// Create a view
newControl.volumeView = new VolumeView(newControl, newControl.volumeCollection);

我在 volumeCollection 和 volumeView 项上手动调用 delete,效果很好。但是作为最后一步删除对象本身是行不通的:

deleteObject: function(object) {
    object.volumeCollection.stop();
    delete object.volumeCollection;
    object.volumeView.stop();
    delete object.volumeView;
    //delete object.config;
    delete object.prototype;
    delete object;
    object = null;
}

我该如何删除这个派生对象?

最佳答案

delete 只会删除对象的属性。如果您想删除一个变量 的值,那么让它超出范围或为其分配一个新值。

一旦引用一个对象的所有属性和变量都消失了,该对象将被垃圾回收。

关于javascript - 如何删除带有原型(prototype)的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16944930/

相关文章:

Javascript:我应该隐藏我的实现吗?

javascript - 无法获取未定义或空引用的属性

javascript - JS直接访问Concat方法

javascript - 使网页适合屏幕

javascript - 通过 homegrid View 上的功能区按钮中的 javascript 更新 CRM 2011 中的字段

javascript - 单击按钮/javascript 重新绘制谷歌图表

javascript - 在 Three.js 中向 GridHelper 对象添加对 Angular 线?

javascript - 如何每 x 秒更改一次 Bootstrap 头图像?

javascript - 当原型(prototype)设计时,是否可以将方法的结果分配给属性?

javascript - 为什么 console.log 显示错误属性?