Áp dụng hàm JavaScript
Sử dụng lại phương pháp
Với apply()
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.
Phương thức JavaScript apply ()
Cách apply()
làm tương tự như call()
phương pháp (chương trước).
Trong ví dụ này, phương thức fullName của người được áp dụng trên person1 :
Thí 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 call () và apply ()
Sự khác biệt là:
Phương call()
thức này nhận các đối số một cách riêng biệt .
Phương apply()
thức nhận 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ì một danh sách đối số.
Phương thức apply () với các đối số
Phương apply()
thức chấp nhận các đối số trong một mảng:
Thí 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 call()
phương pháp:
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");
Mô phỏng một phương pháp tối đa trên mảng
Bạn có thể tìm số lớn nhất (trong danh sách các số) bằng Math.max()
phương pháp:
Thí dụ
Math.max(1,2,3); // Will return 3
Vì các mảng JavaScript không có phương thức max () nên bạn có thể áp dụng
Math.max()
phương thức này để thay thế.
Thí dụ
Math.max.apply(null, [1,2,3]); // Will also return 3
Đối số đầu tiên (null) không quan trọng. Nó không được sử dụng trong ví dụ này.
Những ví dụ này sẽ cho cùng một kết quả:
Thí dụ
Math.max.apply(Math, [1,2,3]); // Will also return 3
Thí dụ
Math.max.apply(" ", [1,2,3]); // Will also return 3
Thí dụ
Math.max.apply(0, [1,2,3]); // Will also return 3
Chế độ nghiêm ngặt của JavaScript
Trong chế độ nghiêm ngặt JavaScript, nếu đối số đầu tiên của apply()
phương thức không phải là một đối tượng, 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.