2017-01-12 8 views
1
// global scope 

var sayMyFavoriteColor = function(adj){ 
    return 'My ' + adj + ' color is ' + this.favoriteColor; + '!' 
}; 

var callFnTest = function (opts) { 
    return sayMyFavoriteColor.call(this, opts); 
}; 

this.favoriteColor = 'Brown'; //adding a global variable to window 
i.e. var favoriteColor = 'Brown' 

callFnTest('most disliked') 
"My most disliked color is Brown" 

私の質問は、thisがそれをウィンドウを指しているといいますか?呼び出しと適用が関数にネストされたときを指す "this"キーワードは何ですか?

+0

@ KenY-N申し訳ありません。 –

+0

あなたの例では、 'sayMyFavoriteColor'の中の' this'は 'this'が' callFnTest'の中にあるものを指します。 'callFnTest(...)'と呼ばれるので、 'this'はグローバルオブジェクトを参照し、厳密モードが有効な場合は' undefined'を参照します。もしあなたがまだいなければ、 'this'についての記事(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/など)を読むことをお勧めします。 –

+0

@FelixKlingしたがって、 'return sayMyFavoriteColor.call(this、opts);'ステートメントではゼロにする必要があります。言い換えれば、ハードコードされた 'this'参照の代わりにコンテキスト内に' favoriteColor: 'Plaid'プロパティを持つオブジェクトがあるとします。色はPlaidでしょうか?右? –

答えて

0

変更されません。このキーワードは、クラスのインスタンスを使用する場合にのみ使用できます。基本的に、a.whateverFunction()に電話する場合、athisです。

関連する問題