Gọi hàm JavaScript
Sử dụng lại phương pháp
Với call()
phương thức, 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 là các 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 một đối tượng JavaScript, nó là một hàm của đối tượng toàn cục (xem chương trước).
Ví dụ dưới đây tạo một đối tượng có 3 thuộc tính là firstName, lastName, fullName.
Thí dụ
const myObject = {
firstName:"John",
lastName: "Doe",
fullName: function () {
return this.firstName + " " + this.lastName;
}
}
// This will return "John Doe":
myObject.fullName();
Từ khóa này
Trong một định nghĩa hàm, this
đề cập đến "chủ sở hữu" của hàm.
Trong ví dụ trên, this
là đối tượng person "sở hữu"
hàm fullName .
Nói cách khác, this.firstName có nghĩa là thuộc tính firstName của đối tượng này .
Đọc thêm về this
từ khóa tại JS Từ khóa này .
Phương thức gọi JavaScript ()
Phương call()
pháp này là một phương pháp JavaScript được xác định trước.
Nó có thể được sử dụng để gọi (gọi) một phương thức có đố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ề một đối tượng khác.
Ví dụ này gọi phương thức fullName của người, sử dụng nó trên person1 :
Thí 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 người, sử dụng nó trên person2 :
Thí 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 call()
thức có thể chấp nhận các đối số:
Thí 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");