js call 实现

实现 call 方法
call 是 JavaScript 中函数的一个方法,用于改变函数的 this 指向并立即执行。可以通过以下方式手动实现:
Function.prototype.myCall = function(context, ...args) {
context = context || window;
const fn = Symbol('fn');
context[fn] = this;
const result = context[fn](...args);
delete context[fn];
return result;
};
实现原理
- 将函数设置为传入对象的属性,这样函数内的
this就会指向该对象。 - 使用
Symbol确保属性名唯一,避免覆盖原有属性。 - 执行函数并保存结果,最后删除临时属性并返回结果。
使用示例
function greet(message) {
console.log(`${message}, ${this.name}`);
}
const person = { name: 'Alice' };
greet.myCall(person, 'Hello'); // 输出: "Hello, Alice"
注意事项
- 第一个参数为
null或undefined时,this会指向全局对象(浏览器中为window)。 - 使用剩余参数
...args收集所有传入的参数,确保兼容不同数量的参数。







