2
var g = {
    lang: "ttt",
    l: function(){
        console.log(lang);
    }
}

console.log(g.l());

ReferenceError:未定义语言

为什么 lang 未定义?

4

2 回答 2

5

您需要使用g.langthis.langthis将引用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));
于 2013-03-08T21:23:17.093 回答
3

因为this——不像Java——从来都不是作用域链查找的一部分。修复:

var g = {
    lang: "ttt",
    l: function(){
        console.log(this.lang);
    }
}

console.log(g.l());
于 2013-03-08T21:22:51.127 回答