实现
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);