Hàm JavaScript áp dụng()
Tái sử dụng phương pháp
Với phương thức apply()
, 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.
Phương thức JavaScript áp dụng()
Phương thức apply()
tương tự như phương thức call()
(chương trước).
Trong ví dụ này, phương thức fullName của Person được áp dụng cho Person1 :
Ví dụ
const person = {
fullName: function() {
return this.firstName + " " + this.lastName;
}
}
const person1 = {
firstName: "Mary",
lastName: "Doe"
}
// This will return "Mary Doe":
person.fullName.apply(person1);
Sự khác biệt giữa cuộc gọi() và áp dụng()
Sự khác biệt là:
Phương thức call()
nhận các đối số riêng biệt .
Phương thức apply()
lấy các đối số dưới dạng một mảng .
Phương thức apply() rất tiện dụng nếu bạn muốn sử dụng một mảng thay vì danh sách đối số.
Phương thức apply() với các đối số
Phương thức apply()
chấp nhận các đối số trong một mảng:
Ví dụ
const person = {
fullName: function(city, country) {
return this.firstName + " " + this.lastName
+ "," + city + "," + country;
}
}
const person1 = {
firstName:"John",
lastName: "Doe"
}
person.fullName.apply(person1, ["Oslo", "Norway"]);
So với phương thức call()
:
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");
Mô phỏng phương thức Max trên mảng
Bạn có thể tìm số lớn nhất (trong danh sách các số) bằng phương thức Math.max()
:
Vì mảng JavaScript không có phương thức max() nên bạn có thể áp dụng phương thức Math.max()
thay thế.
Đối số đầu tiên (null) không thành vấn đề. Nó không được sử dụng trong ví dụ này.
Những ví dụ này sẽ cho kết quả tương tự:
Chế độ nghiêm ngặt của JavaScript
Trong chế độ nghiêm ngặt của JavaScript, nếu đối số đầu tiên của phương thức apply()
không phải là một đối tượng thì nó sẽ trở thành chủ sở hữu (đối tượng) của hàm được gọi. Trong chế độ "không nghiêm ngặt", nó trở thành đối tượng toàn cục.