我正在尝试删除使用原型对象创建的对象。删除似乎不起作用。调用删除后,对象仍然存在... 通过调用:
创建对象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;
}
如何删除此派生对象?
答案 0 :(得分:3)
delete
只会删除对象上的属性。如果要删除变量上的值,则让它超出范围或为其分配新值。
一旦引用对象的所有属性和变量都消失了,该对象将被垃圾回收。
答案 1 :(得分:1)
如果属性是对象引用,则delete命令将删除 财产,但不是对象。垃圾收集器将负责 该对象,如果它没有其他引用。
答案 2 :(得分:1)
这是删除工作的情况:
var b = [1,2,3];
delete b[2]; // b becomes [3, 4, undefined]
如果要清除b使用的内存,只需将其重新分配给任何内容即可。
b = null;
浏览器的垃圾收集器将从那里开始处理它。