昨天在网上看到一个很有意思的js面试题就跟同事讨论了下发现刚开始很绕最后豁然开朗明白过来之后发现还是挺简单的跟大家分享下! 题目如下var a = Functionprototypecallapply(function(a){return a;} []);alert(a);
分析步骤如下 将Functionprototypecall当成整体call方法是由浏览器实现的本地方法是函数类型的内部方法 var a = (Functionprototypecall)apply(function(a){return a;} []);
funapply(objargs)等价于objfun(args)这一步是重点必须理解! (function(a){return a;})apply([]) (function(a){return a;})call()
到这步结果就很明显了a就是alert的结果就是
这个题目迷惑的点就在于Functionprototypecall理解好了就清晰明了了! |