首頁 >php教程 >PHP开发 >JavaScript內建物件arguments介紹

JavaScript內建物件arguments介紹

黄舟
黄舟原創
2016-12-15 10:46:451465瀏覽

arguments是JavaScript裡的內建對象,和NodeList類似,擁有length屬性,但沒有push和pop等陣列方法。

Dean Edwards的format函數很觸發靈感:

function format(string) {
   var args = arguments;
var pattern = new RegExp('%([1-' + args.length + 'args.length 'args. g');
return String(string).replace(pattern, function(match, index) {
return args[index];
});
}

alert(format('%1 want to know whose %2 you %3', 'I', 'shirt', 'wear'));

注意三點:1. String(string)的用法,保證了string為任何值(如null, false, 123等)時都不會出錯。 2. 溫習下replace方法,第二個參數可以是函數,非常有彈性。 3. arguments和正規的巧妙配合,實現了format功能。

將arguments轉換為真實數組的辦法:

var args = Array.prototype.slice.call(arguments);

這個沒什麼好說的,類別數組物件轉換為數組都可以採用slice方法。

建立預置參數的函數:

function makeFunc() {
   var args = Array.prototype.slice.call(arguments);
   var func = slice.call(arguments);
   var func = slice.sh. return func.apply(null, args.concat(Array.prototype.slice.call(arguments)));
   };
}
var majorTom = makeFunc(format, "This is Major Tom to ground control. I'm %11 .");
majorTom("stepping through the door");
majorTom("floating in a most peculiar way");

這個挺有意思的。 makeFunc是一個可以建立函數的函數,所建立的函數都帶有相同的預置參數。這能避免程式碼重複,提高復用性。

建立自引用的函數:

function repeat(fn, times, delay) {

   return function() {
       if(times-- > 0) {
       if(times-- > 0) {
       if(times-- > 0) {
   
           var args = Array.prototype.slice.call(arguments);
           var self = arguments.callee;
           setTimeout(function(){self.
   };
}

function comms { alert('s'); }
var somethingWrong = repeat(comms, 3, 2000);
somethingWrong("Can you hear me, major tom?");

其實就是arguments.匿名函數中用來引用自身,這裡用來實作repeat函數。注意repeat是創建函數的函數,因此有了somethingWrong. 思路有點繞,但想想明白後,很不錯。

用原文中的最後一句話來結尾:

arguments is not often used, a little quirky, but full of surprises and well worth getting to know!

以上就是JavaScriptScript內建對象介紹的內容,更多相關文章請關注PHP中文網(www.php.cn)!


陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn