JavaScriptコンストラクタ関数があり、そのプロトタイプにdestroyメソッドを設定しています。 destroyメソッドからインスタンスを削除する(または少なくとも解除する)ことは可能ですか?ここに私がしようとしているものの例があります。私はタイムアウト機能を考えプロトタイプ関数内からインスタンスを削除する方法はJavaScript
destroy: function() {
var self = this;
setTimeout(function() {
self = undefined
}, 0)
}
:
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
を行うことができないことを理解し、私はそうのようなタイムアウトを使用して、私はそれを回避できると思っていましたクロージャからself
を経由してインスタンスにアクセスできますが、それは機能していないようです。その関数の中から私がconsole.log(self)
の場合は、undefined
と表示されますが、グローバルスコープのk
はまだKlass
のインスタンスです。
誰でもこの作業を行う方法を知っていますか?
なぜこのようなインスタンスを '破棄する必要があるのですか?あなたが尋ねた質問に答えることは一つのことですが、それは私の質問 –
のためにしようとしていることを助けることができませんJavaScriptはガベージコレクトされ、オブジェクトを破壊する明示的な方法がないので、尋ねている。パウエルの場合と同様に、私はなぜあなたにそのようなことが必要なのか非常に不思議です。あなたがしたいことを達成するためのよりよい方法があります。 – chuckj
これはjQueryプラグインのためのものです。破棄メソッドを持つことは、devsが自分のインスタンスを削除または設定解除することを期待してより直感的に思えるかもしれませんが、おそらくそうではありません。 –