1

インスタンス化中に自分自身を削除できるメソッドを作成しようとしました。何度か失敗した後、私はこの悪を書くことになりました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}

機能しない理由は何ですか?

ありがとう。

4

2 に答える 2