Hàm JavaScript liên kết()
Chức năng vay mượn
Với phương thức bind()
, một đối tượng có thể mượn một phương thức từ một đối tượng khác.
Ví dụ dưới đây tạo 2 đối tượng (người và thành viên).
Đối tượng thành viên mượn phương thức fullname từ đối tượng người:
Ví dụ
const person = {
firstName:"John",
lastName: "Doe",
fullName: function () {
return this.firstName + " " + this.lastName;
}
}
const member = {
firstName:"Hege",
lastName: "Nilsen",
}
let fullName = person.fullName.bind(member);
Hãy tự mình thử »Bảo quản cái này
Đôi khi phương thức bind()
phải được sử dụng để tránh làm mất this .
Trong ví dụ sau, đối tượng người có phương thức hiển thị. Trong phương thức hiển thị, this đề cập đến đối tượng người:
Ví dụ
const person = {
firstName:"John",
lastName: "Doe",
display: function () {
let x = document.getElementById("demo");
x.innerHTML = this.firstName + " " + this.lastName;
}
}
person.display();
Hãy tự mình thử »Khi một hàm được sử dụng làm hàm gọi lại, hàm này sẽ bị mất.
Ví dụ này sẽ cố gắng hiển thị tên người sau 3 giây, nhưng thay vào đó nó sẽ hiển thị không xác định :
Ví dụ
const person = {
firstName:"John",
lastName: "Doe",
display: function () {
let x = document.getElementById("demo");
x.innerHTML = this.firstName + " " + this.lastName;
}
}
setTimeout(person.display, 3000);
Hãy tự mình thử » 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 để liên kết Person.display với Person.
Ví dụ này sẽ hiển thị tên người sau 3 giây:
Ví dụ
const person = {
firstName:"John",
lastName: "Doe",
display: function () {
let x = document.getElementById("demo");
x.innerHTML = this.firstName + " " + this.lastName;
}
}
let display = person.display.bind(person);
setTimeout(display, 3000);
Hãy tự mình thử » Cái này là cái gì ?
Trong JavaScript, từ khóa this
đề cập đến một đối tượng .
Đối tượng nào phụ thuộc vào cách this
được gọi (được sử dụng hoặc được gọi).
Từ khóa this
đề cập đến các đối tượng khác nhau tùy thuộc vào cách nó được sử dụng:
Trong một phương thức đối tượng, this đề cập đến đối tượng . |
Một mình, this đề cập đến đối tượng toàn cầu . |
Trong một hàm, this đề cập đến đối tượng toàn cục . |
Trong một hàm, ở chế độ nghiêm ngặt, this là undefined . |
Trong một sự kiện, this đề cập đến phần tử đã nhận được sự kiện. |
Các phương thức như call() , apply() và bind() có thể tham chiếu this tới bất kỳ đối tượng nào . |
Ghi chú
this
không phải là một biến. Đó là một từ khóa. Bạn không thể thay đổi giá trị của this
.