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
destroy メソッドでは単純に実行できないことは理解していますがthis = undefined
、次のようにタイムアウトを使用することでそれを回避できると考えました。
destroy: function() {
var self = this;
setTimeout( function() {
self = undefined
}, 0)
}
タイムアウト機能はクロージャーからインスタンスにアクセスできると思っていましたself
が(実際にアクセスしています)、うまくいかないようです。その関数console.log(self)
内から見ると として表示されますundefined
がk
、グローバル スコープではまだ のインスタンスですKlass
。
これを機能させる方法を知っている人はいますか?