gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 10:22:20 25 4
gpt4 key购买 nike

我正在研究这个内部对象方法的行为,但我被困在一个输出上。

这是代码。

'use strict';

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 <-------------------

那么如果第四个在逻辑上等价于第二个,为什么逻辑 导致上下文丢失?

第 2 部分

如果我错了,请纠正我。
  • 对此的评估以函数声明/表达式调用/调用它的方式发生。
  • 内部箭头函数,this总是指其封闭的父级。 [词汇范围]
  • 最佳答案

    在情况 2 中,括号不会改变 () 左侧的函数引用值这一事实。来自对象属性引用。因此,函数调用的发生方式与案例 1 完全相同,对象引用绑定(bind)到 this。 .

    然而,在案例 4 中,||这些括号内的评估导致该关系丢失;剩下的就是没有任何相关对象的函数引用。那是因为||的逻辑不关心函数引用来自对象属性查找的事实,因此它的结果值只是“裸”的函数引用。

    至于您的后续问题,这两个断言的措辞都不正确。 this 的值确实取决于函数的调用方式,但这与函数的来源或声明方式无关。在箭头函数内部,this 的值不是对其词法父级的引用,它与 this 的值相同在词汇父级中。

    关于javascript - 为什么在方法 [javascript] 中 'this' 结果为 'Undefined',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60800013/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com