2017-07-04 7 views
-2

なぜ私は以下のコードで定義されていないのか分かりません。私はsayメソッドの下で変数を宣言しようとしましたvar _this = thisとconsole.log out _this.nameしかし、それは動作しませんでした。JavaScriptのこのキーワードは範囲外ですか?

let dog = { 
    name: 'doggo', 
    sayName() { 
    console.log(this.name) 
    } 
} 
let sayName = dog.sayName 
sayName() 
+0

window.name =「テスト」; sayName()// test –

+0

クラスを使用したいと思うかもしれません:https://codepen.io/anon/pen/MoGLQq – James

+0

@jamesのため???これは継承を行うことはできません –

答えて

3
window.name="test"; 
sayName();//test 

ウィンドウのコンテキストで機能を実行これはウィンドウです。あなたはそれを渡すのいずれかを介して犬のコンテキストを維持したいことがあります。

sayName.call(dog);//doggo 

または結合機能を維持通過:

let sayName = dog.sayName.bind(dog); 
sayName();//doggo 
関連する問題