javascript - JS中对象的作用域?或者是对象的属性的一些疑问?
程序员文章站
2022-05-24 21:44:58
...
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是什么意思?
run: function() {
this.a=1;
}
};
你不显示指定,还是全局作用域下的变量。
var a=3;
var object = {
a:2,
run: function() {
alert(this.a);//2
alert(a);//3
}
};
object.run();
作用域的问题了,你直接弹出一个a,这个时候程序就会找a,首先会在当前作用域里面找,没有,就会去外面找,然后就找到了var a,这个a其实就相当于 window.a,其实你这里直接弹出一个a,就相当于是找了个 window.a全局作用域下的a ,而为什么找的不是object.a 这个a呢,前面说了,你找的相当于是 window.a 而不是 obejct.a两者的作用域环境不一。js作为一个面向对象的编程语言,所有的东西又要有个存在的归属,那个东西属于哪个,这个要搞明白,如果你不弄的话,就相当于默认了它是全局下面的,一般js所有的东东都是定义在window下面的。所以你要不先定义好是哪个a,那a就相当于直接是window的了。当然函数下面定义的就相当于是属于函数作用域范围里里面的。具体的不多说了。多看资料。
上一篇: 使用Python的判断语句模拟三目运算
推荐阅读
-
解析JavaScript面向对象概念中的Object类型与作用域
-
浅析JS中document对象的一些重要属性_javascript技巧
-
浅析JS中document对象的一些重要属性_javascript技巧
-
javascript - JS中对象的作用域?或者是对象的属性的一些疑问?
-
javascript - JS中对象的作用域?或者是对象的属性的一些疑问?
-
js中如何复制一个对象并获取其所有属性和属性对应的值_javascript技巧
-
解析JavaScript面向对象概念中的Object类型与作用域_基础知识
-
全面分析JavaScript面向对象概念中的Object类型与作用域(附有示例)
-
解析JavaScript面向对象概念中的Object类型与作用域_基础知识
-
js中如何复制一个对象并获取其所有属性和属性对应的值_javascript技巧