Tôi là một người mới bắt đầu để đóng cửa (và javscript nói chung), và tôi không thể tìm thấy một lời giải thích thỏa đáng về những gì đang xảy ra trong mã này:Tại sao việc đóng cửa này không có quyền truy cập vào từ khóa 'này'? - jQuery
function myObject(){
this.myHello = "hello";
this.myMethod = do_stuff;
}
function do_stuff(){
var myThis = this;
$.get('http://example.com', function(){
alert(this.myHello);
alert(myThis.myHello);
});
}
var obj = new myObject;
obj.myMethod();
Nó sẽ cảnh báo 'undefined' và sau đó 'xin chào'. Rõ ràng đây không phải là jQuery cụ thể, nhưng đây là hình thức đơn giản nhất của mã ban đầu của tôi tôi có thể đưa ra. Việc đóng cửa trong do_stuff()
có quyền truy cập vào các biến trong phạm vi đó, nhưng dường như quy tắc này không áp dụng cho từ khóa this
.
Câu hỏi:
gì xảy ra với this
khi đóng cửa được chuyển ngoài phạm vi của do_stuff()
(trong trường hợp này $.get()
)? myThis
có chứa bản sao của this
hoặc tham chiếu đến nó không? Có thường không phải là ý tưởng hay khi sử dụng this
khi đóng cửa?
Bất kỳ phản hồi nào được đánh giá cao.
Tôi sẽ yêu cầu theo dõi nhưng bản chỉnh sửa mới nhất của bạn đã trả lời câu hỏi đó. Cảm ơn! – thewiglaf
@thewiglaf: Bạn được chào đón! Hãy bình luận nếu bạn có bất kỳ nghi ngờ ... – CMS