var a=3;
var object = {
a:2,
run: function() {
alert(a); //a=3;
}
};
object.run();
a为什么不是2?
在对象中的a:2是什么意思?
var a=3;
var object = {
a:2,
run: function() {
alert(a); //a=3;
}
};
object.run();
a为什么不是2?
在对象中的a:2是什么意思?
为什么一个说console.log(object["a"])
可以访问a的都没有
在方括号内填一个字符串可以访问对象下的相应属性
顺便 这道题的作用域链大概是这张图.
很明显可以看出
对象是一个闲置对象,而函数运行时找到的是全局的a.
参考jsvascript精粹,这个牵扯到this指向的问题,谁调用run方法,this就指向调用它的对象,object对象的this指向的是window,所以这里的a是window作用域下的a所以是2。
10 回答11.7k 阅读
2 回答3.2k 阅读✓ 已解决
5 回答2.2k 阅读
3 回答1.7k 阅读✓ 已解决
5 回答798 阅读
4 回答2.2k 阅读✓ 已解决
3 回答1.2k 阅读✓ 已解决
a:2表示object这个对象里"a"属性的值等于2。js里以函数为作用域划分,object里面的a并不是一个单独的变量,要访问它只能通过object.a。下面是类似的一个例子: