var g = {
lang: "ttt",
l: function(){
console.log(lang);
}
}
console.log(g.l());
ReferenceError:未定义lang
为什么lang未定义?
答案 0 :(得分:5)
您需要使用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));
答案 1 :(得分:3)
因为this
- 与Java不同 - 从不是范围链查找的一部分。修复:
var g = {
lang: "ttt",
l: function(){
console.log(this.lang);
}
}
console.log(g.l());