Điều gì đó luôn làm phiền tôi về cách tôi viết mã hướng đối tượng trong Javascript. Khi có một cuộc gọi lại, tôi thường xuyên muốn tham khảo các đối tượng mà ban đầu được gọi là chức năng, dẫn tôi làm điều gì đó như thế này:Tham chiếu "này" từ trong một cuộc gọi lại javascript
MyClass.prototype.doSomething = function(obj, callback) {
var me = this; // ugh
obj.loadSomething(function(err, result) {
me.data = result; // ugh
callback(null, me);
});
}
Trước hết, tạo biến thêm nhất luôn có vẻ ... quá mức đối với tôi. Hơn nữa, tôi phải tự hỏi nếu nó có thể sẽ gây ra vấn đề (tham chiếu vòng tròn? Un-GCd đối tượng?) Bằng cách đi qua biến "tôi" trở lại gọi lại.
Có cách nào tốt hơn để thực hiện việc này không? Phương pháp này có tệ không?
'this' không phải là biến. 'này' không thể được đóng lại. Cách tiếp cận là tốt. –
FUD về "điều ác" và "quá mức" làm phiền tôi. Không sao nếu không thích lò hơi nhưng tại sao lại tạo ra những vấn đề tưởng tượng với nó? Bạn cần giữ lại tham chiếu đến cùng một dữ liệu kèm theo cho dù bạn sử dụng phương pháp nào, vì hàm bên trong không thay đổi. Cho dù bạn sẽ chỉ giữ một tham chiếu đến các dữ liệu ít nhất cần thiết là một cái gì đó mà thông dịch viên phải lo lắng. – millimoose
@millimoose Vâng nói - tôi đã không nghĩ ra một cách để tóm tắt dòng cuối cùng đó. (Và tôi vẫn chạy vào "cái ác" - cũng không phải là "tà ác", nhưng thực sự khủng khiếp theo cách rất khách quan - mã sử dụng 'hàm mới (" .. ")' để "tránh các vấn đề".) –