我正在學習JavaScript,並且我遇到了疑問。爲什麼「this」的值在第一個示例中未定義,但在第二個示例中正確輸出。爲什麼「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"
爲什麼的函數內的 「本」 的值發生變化。我缺少什麼概念?
這就是'這個'的工作原理。 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/這個 – SLaks
你的期望很好,JavaScript的這種語義被打破了。 :-) – Waldheinz
它是JavaScript不是「java腳本」..非常非常大的區別.. :) –