我不问this
是什么。我现在正在重新阅读你不知道的JS:这个&对象Prorotypes书就是为了理解这一点。但书中有两个地方,作者说两件不同的事情(至少看起来像是这样)。
第一个定义:
`这个绑定与声明函数的位置无关,但是 而是与功能的方式有关 调用。
第二个定义:
这实际上是在调用函数时进行的绑定, 它引用的内容完全由呼叫站点确定 该函数被调用。
第一个明确指出它不是关于从哪里调用,而是如何调用它。第二个说this
是关于从哪里调用。
找出this
解析的内容,我需要查看调用网站(或调用函数的位置)对吗?这意味着"什么是this
"是一个问题,而不是一个问题,对吗?我需要查看调用它的 ,而不是调用的方式。
例如,
let test = {
a: 42
}
function foo(){
console.log(this.a);
}
foo.call(test);
通过通过测试显式调用Foo,其中this
将解析为test
范围。对?那么,回答问题"什么是this
"我必须看看它的来源,对吧?
另一个例子:
let test = {
a: foo,
b: 42
}
function foo(){
console.log(this.b);
}
test.a();
在这里,我通过 test
呼叫foo ,为了找出this
解决的问题,我要查看foo的位置来自,对吧?
同样,我(或多或少)了解this
的工作原理。我只是对它的书面定义感到困惑。
答案 0 :(得分:4)
第一个明确指出它不是来自... 所谓的 的位置
不,它声明它不是 声明 的位置。
这两个陈述都说同样的话,但我理解这个混乱。当第二句“完全由呼叫站点确定”时,它表示因为呼叫站点确定 如何 。也称为“调用函数的方式”,它支持第一个语句。