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
javascripthà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:
html<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:
javascriptlet elem = document.querySelector('#elem');
Giả sử chúng ta cũng có hàm func sau:
javascriptfunction 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:
javascriptlet 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':
javascriptnewFunc('1', '2');
Hãy tổng hợp tất cả lại:
javascriptlet 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:
javascriptfunc = func.bind(elem);