var g = {
lang: "ttt",
l: function(){
console.log(lang);
}
}
console.log(g.l());
ReferenceError:未定义语言
为什么 lang 未定义?
var g = {
lang: "ttt",
l: function(){
console.log(lang);
}
}
console.log(g.l());
ReferenceError:未定义语言
为什么 lang 未定义?
您需要使用g.lang
或this.lang
。this
将引用g
对象,除非使用.call()
或.apply()
。
例如,这将导致未定义:
var g = {
lang: "ttt",
l: function(){
console.log(this.lang);
}
}
console.log(g.l.call(Math));
但是,这将始终给出正确的结果(如果您不重新分配g
):
var g = {
lang: "ttt",
l: function(){
console.log(g.lang);
}
}
console.log(g.l.call(Math));
因为this
——不像Java——从来都不是作用域链查找的一部分。修复:
var g = {
lang: "ttt",
l: function(){
console.log(this.lang);
}
}
console.log(g.l());