JavaScript 模拟 apply 的实现
作者:Seiya
时间:2019年08月08日
apply
方法
apply() 方法调用一个具有给定this值的函数,以及作为一个数组(或类似数组对象)提供的参数。
注意:
call() 方法的作用和 apply() 方法类似,区别就是 call() 方法接受的是参数列表,而apply()方法接受的是一个参数数组。
模拟实现
apply 方法的模拟实现和 call 方法的实现类似,不过需要注意的一点是:
- 数组参数的传递问题;
具体实现
Function.prototype.callFn = function(context, args) {
context = context || window
args = args ? args : []
const fn = Symbol()
context.fn = this
const result = context.fn(...args)
delete context.fn
return result
}