Function.prototype.call.apply结合用法分析示例

 更新时间:2013年07月03日 15:12:53   作者:  
昨天在网上看到一个很有意思的js面试题:var a = Function.prototype.call.apply(function(a){return a;}, [0,4,3]);alert(a); 分析步骤如下,感兴趣的朋友可以参考下哈
昨天在网上看到一个很有意思的js面试题,就跟同事讨论了下,发现刚开始很绕最后豁然开朗,明白过来之后发现还是挺简单的,跟大家分享下!
题目如下:var a = Function.prototype.call.apply(function(a){return a;}, [0,4,3]);alert(a);

分析步骤如下:
1、将Function.prototype.call当成整体,call方法是由浏览器实现的本地方法,是函数类型的内部方法
var a = (Function.prototype.call).apply(function(a){return a;}, [0,4,3]);

2、fun.apply(obj,args)等价于obj.fun(args),这一步是重点,必须理解!
(function(a){return a;}).apply(0,[4,3])
(function(a){return a;}).call(0,4,3)

3、 到这步结果就很明显了,a就是4,alert的结果就是4

这个题目迷惑的点就在于Function.prototype.call,理解好了,就清晰明了了!

相关文章

  • JS 有名函数表达式全面解析

    JS 有名函数表达式全面解析

    JS 有名函数表达式全面解析,需要的朋友可以参考下。
    2010-03-03
  • js重写alert事件(避免alert弹框标题出现网址)

    js重写alert事件(避免alert弹框标题出现网址)

    这篇文章主要给大家介绍了关于js重写alert事件的相关资料,这样可以避免alert弹框标题出现网址的情况,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • JS跨域代码片段

    JS跨域代码片段

    js跨域我用的比较多的就是jsonp和程序代理。但是jsonp只能用get,而且是js异步调用,有时候不能满足项目要求
    2012-08-08
  • layui 富文本编辑器和textarea值的相互传递方法

    layui 富文本编辑器和textarea值的相互传递方法

    今天小编就为大家分享一篇layui 富文本编辑器和textarea值的相互传递方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-09-09
  • js为什么不能正确处理小数运算?

    js为什么不能正确处理小数运算?

    这篇文章主要介绍了js不能正确处理小数运算的原因,为大家解除js为什么不能正确处理小数运算的疑虑,感兴趣的小伙伴们可以参考一下
    2015-12-12
  • 前端实现word文档预览和内容提取的详细过程

    前端实现word文档预览和内容提取的详细过程

    在前端直接读取并原样展示Word文档是一个相对复杂的任务,因为Word文档的格式(如.doc或.docx)与Web技术栈使用的格式(HTML、CSS)不兼容,下面这篇文章主要给大家介绍了关于前端实现word文档预览和内容提取的详细过程,需要的朋友可以参考下
    2024-05-05
  • JS实现兼容各浏览器解析XML文档数据的方法

    JS实现兼容各浏览器解析XML文档数据的方法

    这篇文章主要介绍了JS实现兼容各浏览器解析XML文档数据的方法,涉及javascript对XML文件的解析技巧,并根据各浏览器进行了相关调整,具有良好的兼容性,需要的朋友可以参考下
    2015-06-06
  • js每隔两秒输出数组中的一项(实例)

    js每隔两秒输出数组中的一项(实例)

    下面小编就为大家带来一篇js每隔两秒输出数组中的一项(实例)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-05-05
  • 前端解决页面请求接大规模并发问题的代码实现

    前端解决页面请求接大规模并发问题的代码实现

    这篇文章主要介绍了前端解决大规模并发请求问题的多种方法,包括按需加载、分页与无限滚动、缓存机制、减少HTTP请求、使用CDN、前端限流、异步加载、预加载、优化资源大小、代码分割以及服务器端渲染或静态站点生成,需要的朋友可以参考下
    2024-11-11
  • 详解JS鼠标事件中clientX/screenX/offsetX/pageX属性的区别

    详解JS鼠标事件中clientX/screenX/offsetX/pageX属性的区别

    在熟悉业务中播放器功能的时候,发现时间轴上绑定了点击和拖动事件,频繁遇到了类似pageX之类的事件属性,所以本文就来和大家详细聊聊clientX/screenX/offsetX/pageX等属性的区别吧
    2024-03-03

最新评论