手写系列 # 3:实现 call 方法
Posted 凯小默
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了手写系列 # 3:实现 call 方法相关的知识,希望对你有一定的参考价值。
实现
call 语法:
- fun.call(context, arg1,arg2…)
- context: 在fun函数中运行时指定的this值
- arg1,arg2…:指定的参数列表
Function.prototype.kaimoCall = function (context, ...args) {
context = context || window;
// 保留 this
const symbolFn = Symbol();
context[symbolFn] = this;
// 执行函数:通过隐式绑定函数并传递参数
const result = context[symbolFn](...args);
// 删除上下文对象的属性
delete context[symbolFn];
// 返回执行结果
return result;
}
测试
const kaimoObj = {
name: 'kaimo'
};
function kaimoTest() {
console.log(this.name);
}
kaimoTest.kaimoCall(kaimoObj);
以上是关于手写系列 # 3:实现 call 方法的主要内容,如果未能解决你的问题,请参考以下文章
手写JS面试题 --- call apply bind 实现