“this”是指它被调用的地方或者它的调用方式吗?

时间:2018-03-19 04:02:43

标签: javascript this

我不问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的工作原理。我只是对它的书面定义感到困惑。

1 个答案:

答案 0 :(得分:4)

  

第一个明确指出它不是来自... 所谓的 的位置

不,它声明它不是 声明 的位置。

这两个陈述都说同样的话,但我理解这个混乱。当第二句“完全由呼叫站点确定”时,它表示因为呼叫站点确定 如何 。也称为“调用函数的方式”,它支持第一个语句。