Function.prototype.call.apply作用详解
关于call()和apply()基本用法可以参阅如下两篇文章:
(1).call方法参阅JavaScript call()一章节。
(2).apply方法参阅JavaScript apply()一章节。
网上看到一段用法比较奇怪的代码,代码如下:
[JavaScript]
Function.prototype.apply.call(Math.floor, undefined, [1.75])
重新进行一下分组会更清晰:
[JavaScript]
(Function.prototype.apply).call(Math.floor, undefined, [1.75])
任何函数都是Function类的对象实例,所以Math.floor方法对象具有apply方法。
所以上面的代码可以修改等价于如下代码:
[JavaScript]
Math.floor.apply(undefined, [1.75])
上面的代码就很好理解了,就是一个普通的apply方法的应用。
即便是Math.floor对象没有apply方法,也是会转变为上面的格式,这就是call方法语法规定。
再来看一段代码实例:
[JavaScript] 运行代码
var num=Function.prototype.apply.call(function (b) { return this.a + b }, {a:2},[1.75]) console.log(num);
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步