次の例で、このキーワードの予期しない値が見つかりました。
let x = {
z : 10 ,
get func1() {
return function(v) {
console.log(this === v);
}
}
}
x.func1(x)
値は、このキーワードは、オブジェクトであるXそれは、そのオブジェクトから実行されますかのように私は期待して、get関数があるこのキーワードは呼び出し元のオブジェクトに等しいX
この例は私たちに違いを示しています
let x = {
func2() {
return function(v) {
console.log(this === v);
}
}
}
x.func2()(x);
どちらの例でも、getter関数であるfunc1とオブジェクトのメソッドであるfunc2がオブジェクトxから実行され、返された関数が実行されます。したがって、最初の例のこの値がオブジェクトxではなくグローバルオブジェクトと等しくないのはなぜですか。
3
本当に面白い質問です 私はこれまでこのしわを決してしませんでした。
—
TJクラウダー
「かのように、そのオブジェクトから実行されますが、それは- 」さ:右が、そのオブジェクト上で実行します
—
ベルギ
x.func1()
。