Trong cấu trúc sau:IIFE bối cảnh vấn đề
(function(){
var x = function(){
alert('hi!');
}
var y = function(){
alert("hi again!");
}
this.show = function(){
alert("This is show function!");
}
})();
Tại sao this
tham khảo window
đối tượng? Mọi thứ bên trong IIFE có bị cô lập khỏi phạm vi toàn cầu không? Các hàm x
và y
cũng có thuộc tính của window
đối tượng chung?
Ngoài ra, ngay cả khi tôi sử dụng đặt var h = ...
ngay từ đầu:
var h = (function(){
var x = function(){
alert('hi!');
}
var y = function(){
alert("hi again!");
}
this.show = function(){
alert("This is show function!");
}
})();
this
vẫn đề cập đến đối tượng cửa sổ - Tôi chỉ có thể gọi show()
từ phạm vi toàn cầu! Làm thế nào mà?
Trường hợp hợp lệ sẽ là khi bạn cần chuyển "điều này" trong một IIFE cho đối tượng khác sử dụng nó để thực hiện cuộc gọi lại. – AndroidDev