如果我有一个 JavaScript 构造函数,并且我在它的原型上设置了一个 destroy 方法。是否可以从 destroy 方法中删除(或至少取消设置)实例?这是我正在尝试做的一个例子。
Klass.prototype = {
init: function() {
// do stuff
},
destroy: function() {
// delete the instance
}
};
k = new Klass
k.destroy()
console.log(k) // I want this to be undefined
我知道我不能简单地this = undefined
使用 destroy 方法,但我认为我可以通过使用像这样的超时来解决这个问题:
destroy: function() {
var self = this;
setTimeout( function() {
self = undefined
}, 0)
}
我认为超时函数可以通过闭包访问实例self
(确实如此),但这似乎不起作用。如果我console.log(self)
从该函数内部显示为undefined
,但k
在全局范围内仍然是Klass
.
有谁知道如何使这项工作?