Đây là điều mà tôi chắc chắn tôi nên biết câu trả lời, nhưng tôi chỉ là ngu ngốc hoặc tôi chỉ bằng cách nào đó không bao giờ bắt gặp điều này trước ...Ngữ cảnh của một hàm trong một mảng là gì?
Cho mảng sau, được khai báo trong phạm vi toàn cầu:
var arr = [function() {
console.dir(this);
}];
Tôi đã mong đợi this
để tham chiếu đến đối tượng Window. Tuy nhiên, khi gọi hàm:
arr[0](); //Logs Array
Có vẻ như this
thực sự đề cập đến mảng. Sau đó, khi tôi lưu trữ một tham chiếu đến các chức năng trong một biến khác và gọi đó là, this
không tham khảo các đối tượng Window:
var func = arr[0];
func(); //Logs Window
Vì vậy, tại sao bối cảnh của sự thay đổi chức năng? Đây là một số fiddle demonstrating the above two cases.
'this' đề cập đến chủ sở hữu vì vậy tôi đoán chủ sở hữu được tra cứu tại thời gian thực thi. http://www.quirksmode.org/js/this.html – Silvermind