Tôi không chắc chắn nếu tôi đã đặt đúng tiêu đề câu hỏi một cách chính xác; hãy xem xét những điều sau đây để làm rõ ...Mở rộng kế thừa của `this` thành các phương thức/thuộc tính của một` đối tượng`
(function() {
var foo = {
bar: function() {
// Is it possible to reference 'this' as the
// initializing 'object' aka 'e' and not 'foo' ?
// The easy part, currently because 'this' refers to 'foo',
// is returning 'this' aka 'foo' so that chaining can occur
return this;
},
other: function() {
return this;
}
};
Event.prototype.foo = foo;
}());
// usage
document.onmousemove = function(e) {
e.foo.bar().other();
};
Làm thế nào tôi sẽ đi về việc có quyền truy cập vào this
trong phương pháp/đạo cụ của foo
nhưng có this
tham khảo ban đầu object
aka e
và không foo
?
Điều tốt nhất mà tôi đã đưa ra là thế này
(function() {
var foo = function() {
var _foo = this.foo;
_foo._this = this; //recursive reference that I am VERY worried about
return _foo;
};
foo.bar = function() {
var _this = this._this; //_this refers to initial 'object', 'e'
return this; //return 'foo' aka 'this' for function chaining
};
foo.other = function() {
var _this = this._this;
return this;
};
Event.prototype.foo = foo;
}());
// usage
document.onmousemove = function(e) {
e.foo().bar().other();
};
Những gì tôi hiện có làm việc nhưng tôi lo lắng về một vài điều ...
1. Các tham chiếu đệ quy của chỉ định e
đến e.foo._this
và
2. Dự phòng chỉ định e
đến e.foo._this
, nếu this
có thể được truy cập là e
thay vì foo
nó sẽ làm cho 'vật' hoạt động hiệu quả hơn, đặc biệt liên quan đến một sự kiện như sự kiện mousemove.
Ngoài ra, Im cố gắng để tránh một cái gì đó như thế này ...
Tất cả các lời đề nghị được đánh giá cao, Cảm ơn bạn đã dành thời gian.
Vì vậy, nếu tôi hiểu chính xác bạn về cơ bản bạn muốn truy cập cả hai, đối tượng 'foo' và phần tử đã kích hoạt sự kiện? – basilikum
@basilikum Có ... kinda? Bản thân 'event' và đối tượng' foo'. Kinda như 'this' và' this.foo'. Nếu điều đó hợp lý? – Terry