Tôi đang học javascript và tôi đã gặp một nghi ngờ. Tại sao giá trị của "this" không được xác định trong ví dụ đầu tiên, nhưng in ra một cách chính xác trong lần thứ hai.Tại sao giá trị "này" thay đổi.?
dụ 1:
var myNamespace = {
myObject: {
sayHello: function() {
console.log("name is " + this.myName);
},
myName: "john"
}
};
var hello = myNamespace.myObject.sayHello;
hello(); // "name is undefined"
dụ 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"
Tại sao giá trị của "này" thay đổi trong chức năng. Tôi đang thiếu khái niệm gì?
Đó là cách 'this' hoạt động. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/this – SLaks
Kỳ vọng của bạn là tốt, ngữ nghĩa 'this' của JavaScript bị hỏng. :-) – Waldheinz
nó là javascript không phải là "java script" .. rất rất tuyệt vời khác biệt .. :) –