Function.prototype.call.apply結合用法分析示例
更新時間:2013年07月03日 15:12:53 作者:
昨天在網(wǎng)上看到一個很有意思的js面試題:var a = Function.prototype.call.apply(function(a){return a;}, [0,4,3]);alert(a); 分析步驟如下,感興趣的朋友可以參考下哈
昨天在網(wǎng)上看到一個很有意思的js面試題,就跟同事討論了下,發(fā)現(xiàn)剛開始很繞最后豁然開朗,明白過來之后發(fā)現(xiàn)還是挺簡單的,跟大家分享下!
題目如下:var a = Function.prototype.call.apply(function(a){return a;}, [0,4,3]);alert(a);
分析步驟如下:
1、將Function.prototype.call當成整體,call方法是由瀏覽器實現(xiàn)的本地方法,是函數(shù)類型的內部方法
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,理解好了,就清晰明了了!
題目如下:var a = Function.prototype.call.apply(function(a){return a;}, [0,4,3]);alert(a);
分析步驟如下:
1、將Function.prototype.call當成整體,call方法是由瀏覽器實現(xiàn)的本地方法,是函數(shù)類型的內部方法
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重寫alert事件(避免alert彈框標題出現(xiàn)網(wǎng)址)
這篇文章主要給大家介紹了關于js重寫alert事件的相關資料,這樣可以避免alert彈框標題出現(xiàn)網(wǎng)址的情況,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-12-12
JS實現(xiàn)兼容各瀏覽器解析XML文檔數(shù)據(jù)的方法
這篇文章主要介紹了JS實現(xiàn)兼容各瀏覽器解析XML文檔數(shù)據(jù)的方法,涉及javascript對XML文件的解析技巧,并根據(jù)各瀏覽器進行了相關調整,具有良好的兼容性,需要的朋友可以參考下2015-06-06
前端解決頁面請求接大規(guī)模并發(fā)問題的代碼實現(xiàn)
這篇文章主要介紹了前端解決大規(guī)模并發(fā)請求問題的多種方法,包括按需加載、分頁與無限滾動、緩存機制、減少HTTP請求、使用CDN、前端限流、異步加載、預加載、優(yōu)化資源大小、代碼分割以及服務器端渲染或靜態(tài)站點生成,需要的朋友可以參考下2024-11-11
詳解JS鼠標事件中clientX/screenX/offsetX/pageX屬性的區(qū)別
在熟悉業(yè)務中播放器功能的時候,發(fā)現(xiàn)時間軸上綁定了點擊和拖動事件,頻繁遇到了類似pageX之類的事件屬性,所以本文就來和大家詳細聊聊clientX/screenX/offsetX/pageX等屬性的區(qū)別吧2024-03-03

