javascript中的自删除方法实例

时间:2013-05-16 12:08:31

标签: javascript methods instance

我尝试创建一个可以在实例化时删除自身的方法。 经过几次尝试失败后,我最终写下了这个邪恶的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}

它不起作用的原因是什么?

感谢。

2 个答案:

答案 0 :(得分:2)

你尝试过这样的事吗?

function myFunction() {
    // do the actions
    delete myFunction;
};

myFunction();

答案 1 :(得分:1)

不幸的是,你的方法不起作用。删除_instance时,您将删除对象的引用,而不是对象本身。还有另一个对同一对象(t)的引用,因此该对象不会被浏览器垃圾收集。而不是t.rem();你应该只使用t = null;,浏览器将在适当的时候摆脱对象(假设没有其他引用)。