Lệnh gọi hàm JavaScript()
Tái sử dụng phương pháp
Với phương thức call()
, bạn có thể viết một phương thức có thể được sử dụng trên các đối tượng khác nhau.
Tất cả các hàm đều là phương thức
Trong JavaScript tất cả các hàm đều là phương thức đối tượng.
Nếu một hàm không phải là một phương thức của đối tượng JavaScript thì nó là một hàm của đối tượng toàn cục (xem chương trước).
Ví dụ bên dưới tạo một đối tượng có 3 thuộc tính là firstName, LastName, fullName.
Ví dụ
const person = {
firstName:"John",
lastName: "Doe",
fullName: function () {
return this.firstName + " " + this.lastName;
}
}
// This will return "John Doe":
person.fullName();
Hãy tự mình thử » Trong ví dụ trên, this
đề cập đến đối tượng người .
this.firstName có nghĩa là thuộc tính firstName của this .
Giống như:
this.firstName có nghĩa là thuộc tính firstName của người .
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
.Xem thêm:
Phương thức gọi() của JavaScript
Phương thức call()
là một phương thức JavaScript được xác định trước.
Nó có thể được sử dụng để gọi (gọi) một phương thức với đối tượng chủ sở hữu làm đối số (tham số).
Với call()
, một đối tượng có thể sử dụng một phương thức thuộc về đối tượng khác.
Ví dụ này gọi phương thức fullName của Person, sử dụng nó trên Person1 :
Ví dụ
const person = {
fullName : function() {
return this.firstName + " " + this.lastName;
}
}
const person1 = {
firstName:"John",
lastName: "Doe"
}
const person2 = {
firstName:"Mary",
lastName: "Doe"
}
// This will return "John Doe":
person.fullName.call( person1 );
Ví dụ này gọi phương thức fullName của Person, sử dụng nó trên Person2 :
Ví dụ
const person = {
fullName : function() {
return this.firstName + " " + this.lastName;
}
}
const person1 = {
firstName:"John",
lastName: "Doe"
}
const person2 = {
firstName:"Mary",
lastName: "Doe"
}
// This will return "Mary Doe"
person.fullName.call( person2 );
Phương thức call() với các đối số
Phương thức call()
có thể chấp nhận các đối số:
Ví dụ
const person = {
fullName: function(city, country) {
return this.firstName + " " + this.lastName
+ "," + city + "," + country;
}
}
const person1 = {
firstName:"John",
lastName: "Doe"
}
person.fullName.call(person1, "Oslo", "Norway");