如何用原型删除对象

时间:2013-06-05 16:17:00

标签: javascript 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;
}

如何删除此派生对象?

3 个答案:

答案 0 :(得分:3)

delete只会删除对象上的属性。如果要删除变量上的值,则让它超出范围或为其分配新值。

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

答案 1 :(得分:1)

  

如果属性是对象引用,则delete命令将删除   财产,但不是对象。垃圾收集器将负责   该对象,如果它没有其他引用。

答案 2 :(得分:1)

这是删除工作的情况:

var b = [1,2,3];

delete b[2];          // b becomes [3, 4, undefined]

如果要清除b使用的内存,只需将其重新分配给任何内容即可。

 b = null;

浏览器的垃圾收集器将从那里开始处理它。