JavaScript Function bind()
- Trang trước JS hàm Apply
- Trang sau JS 閉包
Borrowing hàm (Function Borrowing)
Bằng cách sử dụng phương thức bind(), một đối tượng có thể mượn phương thức từ một đối tượng khác.
ví dụ sau tạo ra 2 đối tượng (person và member).
đối tượng member mượn phương thức fullname của đối tượng person:
thực thể
const person = { firstName:\"Bill\", lastName: "Gates", fullName: function () { return this.firstName + \" \" + this.lastName; } } const member = { firstName:\"Hege\", lastName: "Nilsen", } let fullName = person.fullName.bind(member);
giữ lại this
thỉnh thoảng phải sử dụng phương thức bind() để ngăn chặn việc mất đi this.
Trong ví dụ sau, đối tượng person có phương thức display. Trong phương thức display,this chỉ đến đối tượng:
thực thể
const person = { firstName:\"Bill\", lastName: "Gates", display: function () { let x = document.getElementById("demo"); x.innerHTML = this.firstName + " " + this.lastName; } } person.display();
Khi hàm được sử dụng làm hàm回调,this sẽ bị mất.
ví dụ này sẽ thử hiển thị tên người sau 3 giây, nhưng nó sẽ hiển thị undefined:
thực thể
const person = { firstName:\"Bill\", lastName: "Gates", display: function () { let x = document.getElementById("demo"); x.innerHTML = this.firstName + " " + this.lastName; } } setTimeout(person.display, 3000);
phương thức bind() đã giải quyết vấn đề này.
Trong ví dụ sau, phương thức bind() được sử dụng để gán person.display cho person.
ví dụ này sẽ hiển thị tên người sau 3 giây:
thực thể
const person = { firstName:\"Bill\", lastName: "Gates", display: function () { let x = document.getElementById("demo"); x.innerHTML = this.firstName + " " + this.lastName; } } let display = person.display.bind(person); setTimeout(display, 3000);
this là gì?
trong JavaScript,this
tham chiếu từ khóađối tượng.
tham chiếuký tự nàođối tượng phụ thuộc vào cách gọi (sử dụng hoặc gọi) nó.
tùy thuộc vào cách sử dụng, từ khóa this
tham chiếu đến các đối tượng khác nhau:
- trong phương pháp đối tượng
this
tham chiếu đếnđối tượng. - sử dụng riêng lẻ
this
tham chiếuđối tượng toàn cục. - trong hàm
this
tham chiếuđối tượng toàn cục. - trong hàm, trong chế độ chặt chẽ,
this
làundefined
. - trong sự kiện
this
tham chiếu đến phần tử nhận sự kiệnthành phần. - các phương pháp như call()、apply() và bind() có thể chuyển
this
tham chiếu đếnmỗi đối tượng.
Lưu ý:this
không phải biến. Nó là một từ khóa. Bạn không thể thay đổi this
giá trị.
Xin xem thêm:
Hướng dẫn:JavaScript this
- Trang trước JS hàm Apply
- Trang sau JS 閉包