私はjavascriptを学んでいますが、疑問に思いました。最初の例では「this」の値が定義されていないのに、2 番目の例では正しく出力されるのはなぜですか。
例 1:
var myNamespace = {
myObject: {
sayHello: function() {
console.log( "name is " + this.myName );
},
myName: "john"
}
};
var hello = myNamespace.myObject.sayHello;
hello(); // "name is undefined"
例 2:
var myNamespace = {
myObject: {
sayHello: function() {
console.log( "Hi! My name is " + this.myName );
},
myName: "Rebecca"
}
};
var obj = myNamespace.myObject;
obj.sayHello();//"Hi! My name is Rebecca"
「this」の値が関数内で変化するのはなぜですか。欠けている概念は何ですか?