最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

將函數(shù)的實(shí)際參數(shù)轉(zhuǎn)換成數(shù)組的方法

 更新時(shí)間:2010年01月25日 20:36:28   作者:  
實(shí)際參數(shù)在函數(shù)中我們可以使用 arguments 對(duì)象獲得 (注:形參可通過 arguments.callee 獲得),雖然 arguments 對(duì)象與數(shù)組形似,但仍不是真正意義上的數(shù)組。
值得慶幸的是,我們可以通過數(shù)組的 slice 方法將 arguments 對(duì)象轉(zhuǎn)換成真正的數(shù)組:
var args = Array.prototype.slice.call(arguments);
對(duì)于slice 方法,ECMAScript 262 中 15.4.4.10 Array.prototype.slice (start, end) 章節(jié)有備注:
復(fù)制代碼 代碼如下:

The slice function is intentionally generic; it does not require that its this value be an Array object. Therefore it can be transferred to other kinds of objects for use as a method. Whether the slice function can be applied successfully to a host object is implementation-dependent.

《Pro JavaScript Design Patterns》(《JavaScript 設(shè)計(jì)模式》)的作者 Dustin Diaz 曾指出:

復(fù)制代碼 代碼如下:

instead of…
var args = Array.prototype.slice.call(arguments); // 懌飛注:下稱方法一
do this…
var args = [].slice.call(arguments, 0); // 懌飛注:下稱方法二

但二者的性能差異真的存在嗎?經(jīng)過個(gè)人簡(jiǎn)單測(cè)試發(fā)現(xiàn):

在 arguments.length 較小的時(shí)候,方法二性能上稍有一點(diǎn)點(diǎn)優(yōu)勢(shì),而在arguments.length 較大的時(shí)候,方法一卻又稍有優(yōu)勢(shì)。

最后附上方法三,最老土的方式:
復(fù)制代碼 代碼如下:

var args = [];
for (var i = 1; i < arguments.length; i++) {
args.push(arguments[i]);
}

不過對(duì)于平常來說,個(gè)人建議還是使用第二種方法,但任何解決方案,沒有最好的,只有最合適:
復(fù)制代碼 代碼如下:

var args = [].slice.call(arguments, 0);
理由有二:

一般的函數(shù)的 arguments.length 都在 10 以內(nèi),方法二有優(yōu)勢(shì);
方法二的代碼量上也比第一種少,至少可以減小一點(diǎn)字節(jié) ^^

如何將 NodeList (比如:document.getElementsByTagName('div'))轉(zhuǎn)換成數(shù)組呢?

解決方案簡(jiǎn)單如下:

復(fù)制代碼 代碼如下:

function nodeListToArray(nodes){
var arr, length;
try {
// works in every browser except IE
arr = [].slice.call(nodes);
return arr;
} catch(err){
// slower, but works in IE
arr = [];
length = nodes.length;
for(var i = 0; i < length; i++){
arr.push(nodes[i]);
}
return arr;
}
}

為什么 IE 中 NodeList 不可以使用 [].slice.call(nodes) 方法轉(zhuǎn)換呢?
In Internet Explorer it throws an error that it can't run Array.prototype.slice.call(nodes) because a DOM NodeList is not a JavaScript object.

  • JS實(shí)現(xiàn)十分鐘倒計(jì)時(shí)代碼實(shí)例

    JS實(shí)現(xiàn)十分鐘倒計(jì)時(shí)代碼實(shí)例

    在本篇文章里我們給大家分享了關(guān)于JS實(shí)現(xiàn)十分鐘倒計(jì)時(shí)的相關(guān)實(shí)例代碼,有需要的朋友們可以學(xué)習(xí)下。
    2018-10-10
  • javascript運(yùn)動(dòng)效果實(shí)例總結(jié)(放大縮小、滑動(dòng)淡入、滾動(dòng))

    javascript運(yùn)動(dòng)效果實(shí)例總結(jié)(放大縮小、滑動(dòng)淡入、滾動(dòng))

    這篇文章主要介紹了javascript運(yùn)動(dòng)效果,結(jié)合實(shí)例形式總結(jié)分析JavaScript實(shí)現(xiàn)放大縮小、滑動(dòng)淡入、滾動(dòng)等效果的方法,需要的朋友可以參考下
    2016-01-01
  • Discuz 公告效果(自動(dòng)換行,無間隙滾動(dòng))

    Discuz 公告效果(自動(dòng)換行,無間隙滾動(dòng))

    Discuz 公告效果效果代碼,可以自動(dòng)換行和無間隙滾動(dòng)
    2009-03-03
  • javascript實(shí)現(xiàn)模擬時(shí)鐘的方法

    javascript實(shí)現(xiàn)模擬時(shí)鐘的方法

    這篇文章主要介紹了javascript實(shí)現(xiàn)模擬時(shí)鐘的方法,涉及javascript操作時(shí)間實(shí)時(shí)顯示的相關(guān)技巧,需要的朋友可以參考下
    2015-05-05
  • js實(shí)現(xiàn)鼠標(biāo)移動(dòng)到圖片產(chǎn)生遮罩效果

    js實(shí)現(xiàn)鼠標(biāo)移動(dòng)到圖片產(chǎn)生遮罩效果

    這篇文章主要為大家詳細(xì)介紹了js實(shí)現(xiàn)鼠標(biāo)移動(dòng)到圖片產(chǎn)生遮罩效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-10-10
  • 實(shí)例詳解display:none與visible:hidden的區(qū)別

    實(shí)例詳解display:none與visible:hidden的區(qū)別

    這篇文章主要介紹了實(shí)例詳解display:none與visible:hidden的區(qū)別的相關(guān)資料,需要的朋友可以參考下
    2017-03-03
  • 面向切面編程(AOP)的理解

    面向切面編程(AOP)的理解

    這篇文章主要介紹了面向切面編程(AOP)的理解,需要的朋友可以參考下
    2015-05-05
  • JS+jQuery實(shí)現(xiàn)注冊(cè)信息的驗(yàn)證功能

    JS+jQuery實(shí)現(xiàn)注冊(cè)信息的驗(yàn)證功能

    本文通過實(shí)例代碼給大家分享了基于js+jquery實(shí)現(xiàn)的注冊(cè)信息驗(yàn)證功能,代碼簡(jiǎn)單易懂,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下吧
    2017-09-09
  • 基于webpack-hot-middleware熱加載相關(guān)錯(cuò)誤的解決方法

    基于webpack-hot-middleware熱加載相關(guān)錯(cuò)誤的解決方法

    下面小編就為大家分享一篇基于webpack-hot-middleware熱加載相關(guān)錯(cuò)誤的解決方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-02-02
  • 最新評(píng)論

    八宿县| 丹东市| 高平市| 芷江| 松溪县| 黄陵县| 托克逊县| 金寨县| 彭州市| 邵东县| 东乡县| 汝阳县| 涡阳县| 河曲县| 格尔木市| 平乡县| 虎林市| 三明市| 岫岩| 宁河县| 渝北区| 虞城县| 胶南市| 海门市| 西乡县| 永福县| 伊春市| 洛浦县| 广水市| 文安县| 商丘市| 吴忠市| 勃利县| 兴海县| 临邑县| 建平县| 随州市| 大荔县| 无极县| 宜都市| 江安县|