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
。orが使用されない限り、オブジェクトthis
を参照します。g
.call()
.apply()
たとえば、これは undefined になります。
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());