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());