0
私は、コンストラクタ内の矢印関数について少し混乱しています。矢印関数はコンストラクタ内でどのように機能しますか?
私の知るところ通り:arrow機能を使用する場合、キーワードthisはその実際の機能にリバウンドしません。親スコープから継承されます。
のは例を見てみましょう:
var d = {
b: 'b',
x:() =>{
console.log(this); // this will return Window Object.
}
}
d.x();
それはWindow
オブジェクトを印刷します。それは結構です。
しかし、この印刷オブジェクトc
function A(){
this.b ='b';
this.x =() =>{
console.log(this);
}
}
var c = new A()
c.x();
コンストラクタ関数インチ私によれば、Window Objectを返すはずです。どうして ?
あなたの*レキシカルスコープ*はすでに 'A'です(そうでなければ、' this.x = ... 'が最初に機能しませんでした)。 – haim770
これは面白いです:b = new A(); c = new A(); b.x = c.x; –