实现Function.prototype.call.apply作用详解

快乐打工仔 分类:实例代码

Function.prototype.call.apply作用详解属于前端实例代码,有关更多实例代码大家可以查看

关于call()和apply()基本用法可以参阅如下两篇文章:

(1).call方法参阅JavaScript call()一章节。

(2).apply方法参阅JavaScript apply()一章节。

网上看到一段用法比较奇怪的代码,代码如下:

Function.prototype.apply.call(Math.floor, undefined, [1.75])

重新进行一下分组会更清晰:

(Function.prototype.apply).call(Math.floor, undefined, [1.75])

任何函数都是Function类的对象实例,所以Math.floor方法对象具有apply方法。

所以上面的代码可以修改等价于如下代码:

Math.floor.apply(undefined, [1.75])

上面的代码就很好理解了,就是一个普通的apply方法的应用。

即便是Math.floor对象没有apply方法,也是会转变为上面的格式,这就是call方法语法规定。

再来看一段代码实例:

var num=Function.prototype.apply.call(function (b) { return this.a + b }, {a:2},[1.75])
console.log(num);

Function.prototype.call.apply作用详解,这样的场景在实际项目中还是用的比较多的,关于Function.prototype.call.apply作用详解就介绍到这了。

回复

我来回复
  • 暂无回复内容