为什么'this'在[javascript]方法中结果为'defined'

问题描述 投票:1回答:1
我正在研究此内部对象方法的行为,但被困在一个输出中。

这里是代码。

let obj, method; obj = { go() { alert(this); } }; obj.go(); // (1) [object Object] (obj.go)(); // (2) [object Object] QUESTION 2 (method = obj.go)(); // (3) undefined (obj.go || obj.stop)(); // (4) undefined ------> Doubt <-------------------

所以为什么

结果在问题4中未定义,而在问题2中相同的结果

问题2与问题1相同,只是添加了括号。但是问题4的评估如何发生?

Part-2

如果我错了,请纠正我。

  1. 对此求值方法是使用函数声明/表达式进行调用的方式。

  2. Inside arrow function,这始终是指其封闭的parent。 [词法范围]

我正在研究这种内部对象方法的行为,而我只能停留在一个输出上。这是代码。 let obj,方法; obj = {go(){alert(this); }; obj.go(); //(1)[...

javascript object methods ecmascript-6 this
1个回答
0
投票
在情况2中,括号不会更改()左侧的功能参考值来自对象属性参考的事实。因此,函数调用的发生方式与情况1完全相同,对象引用绑定到this
© www.soinside.com 2019 - 2024. All rights reserved.