call()
方法的语法为:
func.call(thisArg, arg1, ... argN)
在这里, func
是一个函数。
call()参数
call()
方法采用:
-
thisArg
为对func
的调用提供的this
的值。 -
arg1, ... argN
(可选) -参数的函数。
从call()返回值
- 返回使用指定的
this
值和参数调用函数的结果。
通过使用call()
,我们可以使用属于一个对象的函数来分配和调用另一个对象。
示例1:使用call()
function greet() {
const string = `My name is ${this.firstName} ${this.secondName}. I am ${this.age} years old.`;
console.log(string);
}
const human = {
firstName: "Judah",
lastName: "Parker",
age: 26,
};
greet.call(human); // My name is Judah undefined. I am 26 years old.
输出
My name is Judah undefined. I am 26 years old.
示例2:使用call()链接构造函数
function Animal(name, age) {
this.name = name;
this.age = age;
}
function Horse(name, age) {
Animal.call(this, name, age);
this.sound = "Neigh";
}
function Snake(name, age) {
Animal.call(this, name, age);
this.sound = "Hiss";
}
const snake1 = new Snake("Harry", 5);
console.log(snake1.name, snake1.age, snake1.sound);
const horse1 = new Horse("Arnold", 8);
console.log(horse1.name, horse1.age, horse1.sound);
输出
Harry 5 Hiss
Arnold 8 Neigh
注意:之间的差值call()
和apply()
是call()
接受一个参数列表,而apply()
接受的参数的单个阵列。
推荐读物: JavaScript函数apply()