私はC++から来ましたが、「これ」は実行コンテキストのみを意味することがわかりました。セルフインスタンスを取得する保証された方法はありますか?
私はいつもjavascriptで「this」によってインスタンスを取得しようとしているのでこれを尋ねますが、次のように説明する方法など、自分でそれを保証するためにさまざまな方法を実行する必要があります。
MyClass.prototype.OnSomethingHappened = function () {
// I want to get the reference to the instance of this class.
}
しかし、この種の関数はしばしば次のように呼ばれます。
var bar = new MyClass();
foo.onclick = bar.OnSomethingHappened;
onclickが発生すると、OnSomethingHappenedが呼び出されますが、「this」はバーのインスタンスを意味するものではありません。
次のような解決策があります。
var bar = new MyClass();
foo.onclick = function () {
bar.OnSomethingHappened();
}
はい、ここでは完全に機能します。しかし、考慮してください:
var bar = new MyClass();
MyClass.prototype.OnSomethingHappened = function () {
// I want to get the reference to the instance of this class.
}
MyClass.prototype.IWantToBindSomething = function () {
// sorry for using jquery in a pure javascript question
$("div#someclass").bind("click", function () {
bar.OnSomethingHappened();
}); // I think this is a very very bad practice because it uses a global variable in a class, but I can't think of other workaround, since I have no guaranteed way of getting the instance.
}