这篇文章主要介绍了js如何实现apply函数,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。
apply 函数的实现步骤:
-
判断调用对象是否为函数,即使我们是定义在函数的原型上的,但是可能出现使用 call 等方式调用的情况。
-
判断传入上下文对象是否存在,如果不存在,则设置为 window 。
-
将函数作为上下文对象的一个属性。
-
判断参数值是否传入
-
使用上下文对象来调用这个方法,并保存返回结果。
-
删除刚才新增的属性
-
返回结果
// apply 函数实现Function.prototype.myApply = function(context) { // 判断调用对象是否为函数 if (typeof this !== "function") { throw new TypeError("Error"); } let result = null; // 判断 context 是否存在,如果未传入则为 window context = context || window; // 将函数设为对象的方法 context.fn = this; // 调用方法 if (arguments[1]) { result = context.fn(...arguments[1]); } else { result = context.fn(); } // 将属性删除 delete context.fn; return result;};