javascript - 通过实例方法和 this 访问 JS 类/对象变量 - 执行上下文
问题描述
第一个问题:为什么this
getXArrow() 中的值等于解决方案对象?它不应该等于this
调用它的解决方案对象的值,即 Window 对象吗?
第二个问题:JS 引擎不应该沿着每个函数的作用域链向上查找 x 的值吗?getX() 和 getXArrow() 的范围没有x
,因此 JS 引擎将检查它们的调用者(解决方案对象)并找到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
属性来访问该实例。
推荐阅读
- haskell - 我无法在 Haskell 中运行模块
- python - spark中的迭代过滤器似乎不起作用
- python-3.x - Try/except 不起作用,我使用 Pycharm,我使用 python 3.9 作为我的项目的解释器
- julia - Julia,将数组的选定元素转换为具有二项式频率的新数字
- android - 无法获取 google_maps_flutter 1.1.1 的包依赖项
- html - 以可访问的方式将表单外的按钮与表单相关联
- macos - 错误“找不到受支持的 WSMan 客户端库”。使用 macOS pwsh
- kotlin - 如何在 Kotlin 中连接两个整数?
- ios - 为什么 Alamofire 在发布请求时会引发 CredStore 错误?
- android - 升级颤振版本 2.0 时出错