call()
允许为不同的对象分配和调用属于一个对象的函数/方法。call()和apply()都可以改变this的指向。
备注:该方法的语法和作用与 apply() 方法类似,只有一个区别,就是 call() 方法接受的是一个参数列表,而 apply() 方法接受的是一个包含多个参数的数组。
语法
function.call(thisArg, arg1, arg2, …)
参数
thisArg
可选的。在 function 函数运行时使用的 this 值。请注意,this可能不是该方法看到的实际值:如果这个函数处于非严格模式下,则指定为 null 或 undefined 时会自动替换为指向全局对象,原始值会被包装。
arg1, arg2, ...
指定的参数列表。
返回值
使用调用者提供的 this 值和参数调用该函数的返回值。若该方法没有返回值,则返回 undefined。
尝试一下
var Product = {
color: 'red'
};
function Person(name, age) {
console.log(name, age, this.color);
};
Person('小明', 18); // 小明 18 undefined
Person.call(Product, '小明', 18); // 小明 18 red
实现一个简单call()函数功能,代码如下