gpt4 book ai didi

javascript - 通过实例方法访问 JS 类/对象变量及其 - 执行上下文

转载 作者:行者123 更新时间:2023-12-02 23:15:22 26 4
gpt4 key购买 nike

第一个问题:为什么 getXArrow() 中 this 的值等于 Solution 对象?它不应该等于调用它的解决方案对象(即 Window 对象)的 this 值吗?

第二个问题:JS 引擎不应该沿着每个函数的作用域链向上查找 x 的值吗? getX() 和 getXArrow() 的范围没有 x,因此 JS 引擎将检查其调用者(Solution 对象)并找到 x: 10,如下所示在构造函数中声明。反而好像跳到了全局范围?

let x = 5
class Solution {
constructor() {
this.x = 10
}
getX() {
console.log(this);
console.log(x);
}
getXArrow = () => {
console.log(this);
console.log(x);
}
}

s.getXArrow() // Output: Solution
// 5
s.getX() // Output: Solution
// 5

谢谢!

最佳答案

getX 只有两个可访问的作用域:它自己的函数作用域和全局作用域。类不会创建作用域,因此无法访问 x。但是,您可以通过 this 访问该实例,并可以访问其 .x 属性。

关于javascript - 通过实例方法访问 JS 类/对象变量及其 - 执行上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57188287/

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