我试图创建一个可以在实例化时自行删除的方法。经过几次失败的尝试,我最终写了这个邪恶rem()
var g = function () {
this.rem = function () {
var _instance = this;
setTimeout(function () {
console.log('_instance before:', _instance, 'scope:', this);
delete _instance;
console.log('_instance after:', _instance);
}, 10);
return this;
};
return this;
}
我知道它看起来很丑。但这对我来说有点奇怪,这也不起作用。在匿名函数内部,作用域window
和_instance
变量似乎也引用了所需的实例。
var t = new g();
t.rem();
输出:
_instance before: g {asdf: 3, rem: function}, scope: Window {top: Window, window: Window, location: Location, external: Object, chrome: Object…}
_instance after: g {asdf: 3, rem: function}
它不工作的原因是什么?
谢谢。