欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

javascript下string.format函數(shù)補(bǔ)充

 更新時(shí)間:2010年08月24日 02:11:24   作者:  
在上一篇中,自謙懶人的咚鏘留言指出樓豬改寫的format函數(shù)在參數(shù)輸入11個(gè)后不起作用了
又重新閱讀了一遍Andrew的原文,在原文下面的評(píng)論中,赫然發(fā)現(xiàn)也有人早提出參數(shù)個(gè)數(shù)的問題,同樣懶惰的樓豬直接拷貝原文評(píng)論答復(fù)了一下,同時(shí)還發(fā)現(xiàn)說漏了很重要的一個(gè)注意點(diǎn)Array.prototype.slice。
下面統(tǒng)一補(bǔ)充說明一下:

1、string.format的參數(shù)個(gè)數(shù)
在Andrew的原文中,已經(jīng)有人指出:

eric d. Hi, thanks for that brilliant article. Made a lot of things a lot clearer!
Note: new RegExp("%([1-" + arguments.length + "])", "g"); will fail passed 9 arguments (the regexp would be "%([1-10])" so it will only match %0 and %1).

I think an easy fix would be something like:
function format(string) { var args = arguments; var pattern = new RegExp("%([0-9]+)", "g"); return String(string).replace(pattern, function(match, index) { if (index == 0 || index >= args.length) throw "Invalid index in format string"; return args[index]; }); };
(Sorry for nitpicking, I understand it was only an example and brevety is the main objective, but its a great function to have)

Posted on: January 20th 2009, 12:01 am

這個(gè)留言的家伙給足了作者面子,稱“I understand it was only an example and brevety is the main objective, but its a great function to have”。原來,原文中定義的正則表達(dá)式能夠驗(yàn)證的數(shù)字范圍是...原來如此啊,哈哈,樓豬心虛的笑了。

2、Array.prototype.slice
將arguments轉(zhuǎn)換成Array的方法是通過Array.prototype.slice.call(arguments);方式轉(zhuǎn)換的,也就是說類數(shù)組方式的對(duì)象都可以通過slice的方式實(shí)現(xiàn)到Array的轉(zhuǎn)換,說到類數(shù)組對(duì)象的轉(zhuǎn)換,真的很有必要重新記錄總結(jié)一下Array的原型方法slice。
(1)、常見用法
樓豬在早前的這篇里通過一段代碼一帶而過介紹過slice方法:slice(start,end):返回?cái)?shù)組對(duì)象的一個(gè)子集,索引從start開始(包括 start),到end結(jié)束(不包括end),原有數(shù)組不受影響。其實(shí)我們可以大膽猜測(cè)slice函數(shù)內(nèi)部應(yīng)該是定義了一個(gè)數(shù)組變量,然后通過循環(huán),將數(shù)組對(duì)應(yīng)索引值push進(jìn)變量,最后return這個(gè)Array變量。
(2)、“不是Array,我們也想要變成Array”
不是Array,但是有l(wèi)ength屬性,可以根據(jù)索引取值,比如本文中的arguments,我們可以通過下面的方式轉(zhuǎn)換為真實(shí)數(shù)組:

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

function test() {
var args = Array.prototype.slice.call(arguments);
alert(args.length);
args.push("jeff"); //push
args.push("wong");
alert(args.length); //2
alert(args.pop()); //pop
alert(args.length); //1
}
test();

我們看到push和pop方法都起作用了。同樣,Nodelist也有類似特性。怎么樣將NodeList轉(zhuǎn)換成Array?看過樓豬原文的讀者可能會(huì)覺得這都是陳詞濫調(diào),還是多說一句,在IE下,Array.prototype.slice.call(nodelist)就不是那么回事了,最后再貼一次將NodeList轉(zhuǎn)換為Array并且兼容ie和其他瀏覽器的方法結(jié)束本文:
復(fù)制代碼 代碼如下:

var nodelist =something;//一個(gè)NodeList變量
var arr = null; //數(shù)組
try { //ie
arr = new Array();
for (var i = 0; i < nodelist.length; i++) {
arr.push(nodelist[i]);
}
} catch (e) {//其他瀏覽器
arr = Array.prototype.slice.call(nodelist);
}

作者:Jeff Wong

相關(guān)文章

  • 微信小程序?qū)崿F(xiàn)文件預(yù)覽

    微信小程序?qū)崿F(xiàn)文件預(yù)覽

    這篇文章主要為大家詳細(xì)介紹了微信小程序?qū)崿F(xiàn)文件預(yù)覽,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-10-10
  • 如何理解JS函數(shù)防抖和函數(shù)節(jié)流

    如何理解JS函數(shù)防抖和函數(shù)節(jié)流

    函數(shù)防抖和函數(shù)節(jié)流都是對(duì)函數(shù)進(jìn)行特殊的設(shè)置,減少該函數(shù)在某一時(shí)間段內(nèi)頻繁觸發(fā)帶來的副作用。二者只是采用的設(shè)置方式和原理不一樣,其最終的目的是一樣的。
    2021-05-05
  • 兩個(gè)JavaScript中的特殊值null和undefined詳解

    兩個(gè)JavaScript中的特殊值null和undefined詳解

    Null和Undefined是JavaScript中非?;A(chǔ)和重要的概念,理解它們的含義、特點(diǎn)和使用方式對(duì)于避免出現(xiàn)錯(cuò)誤和編寫健壯的應(yīng)用程序非常重要,這篇文章主要介紹了兩個(gè)JavaScript中的特殊值null和undefined詳解,需要的朋友可以參考下
    2023-06-06
  • js中繼承的幾種用法總結(jié)(apply,call,prototype)

    js中繼承的幾種用法總結(jié)(apply,call,prototype)

    本篇文章主要介紹了js中繼承的幾種用法總結(jié)(apply,call,prototype) 需要的朋友可以過來參考下,希望對(duì)大家有所幫助
    2013-12-12
  • BootStrap中Datetimepicker和uploadify插件應(yīng)用實(shí)例小結(jié)

    BootStrap中Datetimepicker和uploadify插件應(yīng)用實(shí)例小結(jié)

    這篇文章主要介紹了BootStrap中Datetimepicker和uploadify插件應(yīng)用實(shí)例小結(jié)的相關(guān)資料,非常不錯(cuò)具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-05-05
  • JavaScript仿微信打飛機(jī)游戲

    JavaScript仿微信打飛機(jī)游戲

    這篇文章主要為大家詳細(xì)介紹了JavaScript仿微信打飛機(jī)游戲的相關(guān)代碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • javascript數(shù)組去重的方法匯總

    javascript數(shù)組去重的方法匯總

    數(shù)組去重復(fù)是一個(gè)常見的需求,我們暫時(shí)考慮同類型的數(shù)組去重復(fù)。主要是理清思路和考慮下性能。以下方法,網(wǎng)上基本都有,這里只是簡(jiǎn)單地總結(jié)一下分享給大家。
    2015-04-04
  • JavaScript修改瀏覽器tab標(biāo)題小技巧

    JavaScript修改瀏覽器tab標(biāo)題小技巧

    這篇文章主要介紹了JavaScript修改瀏覽器tab標(biāo)題小技巧,需要的朋友可以參考下
    2015-01-01
  • js+canvas實(shí)現(xiàn)刮刮獎(jiǎng)功能

    js+canvas實(shí)現(xiàn)刮刮獎(jiǎng)功能

    這篇文章主要為大家詳細(xì)介紹了js+canvas實(shí)現(xiàn)刮刮獎(jiǎng)功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-09-09
  • JS實(shí)現(xiàn)壓縮上傳圖片base64長(zhǎng)度功能

    JS實(shí)現(xiàn)壓縮上傳圖片base64長(zhǎng)度功能

    這篇文章主要介紹了js實(shí)現(xiàn)壓縮上傳圖片base64長(zhǎng)度功能,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-12-12

最新評(píng)論