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);

Xem thêm

  • phương thức call,
    gọi hàm với một ngữ cảnh
  • phương thức apply,
    gọi hàm với một ngữ cảnh