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");
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)!