JavaScript では、私が持っている場合:
var foo = function(){}
foo.prototype.bar = function() {
console.log(this);
}
baz = new foo();
baz.name = 'baz';
bing = new foo();
bing.name = 'bing';
baz.bar();
bing.bar();
setTimeout(baz.bar);
setTimeout(bing.bar);
私のコンソールではbaz
、、、、オブジェクトbing
がこの順序でログに記録されています。window
window
見るために必要な最も単純な、または「通常の」トリックは次のとおりです。
baz
, bing
, baz
,のプロトタイプの関数bing
内で「このような」変数を使用してログに記録されます。bar
foo
「このような」とはbar()
、オブジェクトにアクセスするために内部で使用できる変数のことであり、現在と将来の両方のメソッドです。
編集:
さらに明確にするために、 bar() をいつ呼び出すかを知る必要がないようにしたいと思いthis
ますbind()
。私がbar()
baz や bing を呼び出しているとき、それは「ブラック ボックス」であると仮定します。bar() を bing または baz のメソッドとして、それがどのように機能するかを知らずに呼び出したいと思います。また、bar() の内部で、それがどのオブジェクトのメソッドであるかを認識したいと考えています。