Tôi đang cố gắng truy cập các biến thành viên của một lớp mẫu trong JavaScript trong trình xử lý sự kiện - thứ mà tôi thường sử dụng từ khóa "này" (hoặc "đó" [bản sao của điều này] trong trường hợp xử lý sự kiện). Không cần phải nói, tôi đang gặp rắc rối.Từ khóa "này" trong các phương thức sự kiện khi sử dụng đối tượng nguyên mẫu JavaScript
Lấy ví dụ, đoạn mã này HTML:
<a id="myLink" href="#">My Link</a>
Và mã JavaScript này:
function MyClass()
{
this.field = "value"
this.link = document.getElementById("myLink");
this.link.onclick = this.EventMethod;
}
MyClass.prototype.NormalMethod = function()
{
alert(this.field);
}
MyClass.prototype.EventMethod = function(e)
{
alert(this.field);
}
Instantiating một đối tượng MyClass và gọi NormalMethod hoạt động chính xác như tôi mong đợi nó (cảnh báo nói rằng " giá trị "), nhưng nhấp vào liên kết dẫn đến giá trị không xác định vì từ khóa" này "hiện tham chiếu đến mục tiêu sự kiện (phần tử HTML anchor).
Tôi mới đến nguyên mẫu JavaScript phong cách, nhưng trong quá khứ, với đóng cửa, tôi đã chỉ đơn giản là tạo ra một bản sao của "này" trong constructor:
var that = this;
Và sau đó tôi có thể truy cập vào các thành viên các biến trong các phương thức sự kiện thông qua đối tượng "đó". Điều đó dường như không hoạt động với mã nguyên mẫu. Có cách nào khác để đạt được điều này không?
Cảm ơn.
Bạn có đề cập đến các thư viện Prototype hoặc các lớp học nguyên mẫu JavaScript khá thẳng? –
Trả lời trễ ba năm :) Nhưng đối với hậu thế: tôi đang đề cập đến các lớp nguyên mẫu JavaScript thẳng. – Michael
Bản sao có thể có của [Cách truy cập đúng 'this'/context bên trong một cuộc gọi lại?] (Http://stackoverflow.com/q/20279484/1048572)? – Bergi