Phương thức bind
Phương thức bind ràng buộc ngữ cảnh cho một hàm.
Tham số đầu tiên cần truyền vào là
ngữ cảnh, và các tham số tiếp theo là các tham số
của hàm. Phương thức này trả về một hàm mới,
bên trong đó this sẽ bằng với ngữ cảnh đã truyền.
Cú pháp
hàm.bind(ngữ cảnh, tham_số1, tham_số2...);
Ví dụ
Giả sử chúng ta có một phần tử nhập liệu:
<input id="elem" value="text">
Giả sử tham chiếu đến phần tử nhập liệu này được lưu trong biến
elem:
let elem = document.querySelector('#elem');
Giả sử chúng ta cũng có hàm func sau:
function func(param1, param2) {
console.log(this.value + param1 + param2);
}
Hãy sử dụng bind để tạo một
hàm mới, sẽ là bản sao của hàm func,
nhưng this trong nó sẽ luôn bằng elem:
let newFunc = func.bind(elem);
Bây giờ trong biến newFunc chứa một
hàm. Hãy gọi nó, truyền vào tham số đầu tiên
là '1', và tham số thứ hai là '2':
newFunc('1', '2');
Hãy tổng hợp tất cả lại:
let elem = document.getElementById('elem');
function func(param1, param2) {
console.log(this.value + param1 + param2);
}
let newFunc = func.bind(elem);
newFunc('1', '2'); // sẽ in ra 'text12'
Ví dụ
Không nhất thiết phải lưu kết quả của
bind vào một hàm mới newFunc,
có thể đơn giản là ghi đè lên func:
func = func.bind(elem);