为什么 createDomTree 无法获取到 test 这个变量? test 是定义在 createDomTree()之外的。
var app = function() { this.sidebar = { test: 1, createDomTree: function() { console.log(test) } } } console.log(new app().sidebar); // {test: 1, createDomTree: ƒ} new app().sidebar.createDomTree(); // Uncaught ReferenceError: test is not defined
1
moen 2022-09-25 21:12:41 +08:00 1
你这样写其实访问的是 globalThis.test ,而你期望的 test 在 createDomTree() 里是在 this 上
|
2
DrakeXiang 2022-09-25 21:30:21 +08:00 1
这个 test 不是变量。。是对象属性
`{ a: 1, b: a } ` 你觉得这么写可以么。。 |
3
wangtian2020 2022-09-26 08:41:19 +08:00 1
console.log(this.test)
|
4
thinkershare 2022-09-26 10:22:08 +08:00 1
因为 JavaScript 不会将 this 默认作为 scope, 如果想要访问函数的 this scope, 必须显示使用 this., 而且 this 是动态绑定的, 它总是 instance.method()前面的 instance( 已经绑定的函数除外)
|
5
monologue520 2022-09-26 16:06:38 +08:00 1
访问变量,首先应确定变量所在的上下文环境, 在没有确定上下文环境的情况下默认为 window,而 window 下并无「 test 」,所以会报错
|