我正在学习 javascript,但遇到了疑问。为什么在第一个示例中未定义“this”的值,但在第二个示例中正确打印出来。
示例 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”的值在函数内会发生变化。我错过了什么概念?