Call 函数
说明
TIP
call 会立即执行。
特性
- 入参是一个
(a,b,c)的列表形式,记忆方式,C类似括号(。 call的第一个参数就是this所要指向的那个对象,后面的参数则是函数调用时所需的参数。- 应用:调用对象的原生方法
js
var obj = {};
obj.hasOwnProperty('toString'); // false
// 覆盖掉继承的 hasOwnProperty 方法
obj.hasOwnProperty = function () {
return true;
};
obj.hasOwnProperty('toString'); // true
Object.prototype.hasOwnProperty.call(obj, 'toString'); // falsecall 与 apply 区别
- call 入参是
独立参数,如fn("click","touch") - apply 入参是
数组,如fn(["click","touch"]),否则无法被读取到
js
function github(param1, param2) {
console.info(param1, param2);
}
const repoObject = { repo: 'veaba/web-advanced' };
const authorObject = { author: 'veaba' };
fn.apply(null, [authorObject], repoObject); // {author: 'veaba'}, undefined
fn.apply(null, repoObject, [authorObject]); // undefined undefined