JavaScript this
参照状況で混乱します。JavaScriptこれは関数内のオブジェクトではなくウィンドウを指します
私はオブジェクトメソッド内で関数を宣言するコードを作成しています。 (その理由は、オブジェクトメソッド内でコードを整理して、そのメソッドをその関数にプライベートに保つことです)。
以下は私の問題を再現するための実験です。
私はthis
greeting
内部の機能ではなく、人範囲の窓範囲を参照することがわかりました。
var person = {
nickname: "Makzan",
sayHi: function() {
console.log(this);
var greeting = function() {
console.log(this);
return "Aloha " + this.nickname;
}
console.log(greeting());
}
}
person.sayHi();
(jsfiddleで同じコード:http://jsfiddle.net/makzan/z5Zmm/)
そして、これはブラウザでログ結果である:JSで
> Object
> Window
Aloha undefined
、私はこのリファレンスはトリッキーであることを知っています。そして、私はこのコードを動作させるために.call
メソッドを使用して範囲を変更することができます。
var greeting = (function() {
console.log(this);
return "Aloha " + this.nickname;
}).call(this);
はしかし、私は、デフォルトではthis
が方法を挨拶内ウィンドウ範囲を参照してください理由を知りたいのですか?
ご協力いただきありがとうございます。
呼ばれた方法によって 決定されます文脈なしで。 –
ありがとうございます。私は「文脈」が今何を意味するのかについてもっと学ぶ。 – Makzan