亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

javascript內置對象arguments詳解

2019-11-20 20:56:37
字體:
來源:轉載
供稿:網友

一、什么是arguments
arguments 是是JavaScript里的一個內置對象,它很古怪,也經常被人所忽視,但實際上是很重要的。所有主要的js函數庫都利用了arguments對象。所以agruments對象對于javascript程序員來說是必需熟悉的。
所有的函數都有屬于自己的一個arguments對象,它包括了函所要調用的參數。他不是一個數組,如果用typeof arguments,返回的是'object'。雖然我們可以用調用數據的方法來調用arguments。比如length,還有index方法。但是數 組的push和pop對象是不適用的。
二、創建一個靈活的函數
看起來貌似argument對象使用起來十分有限,但是實際上它是一個非常有用的對象。你可以通過使用argument對象讓函數能夠調用數量不定 的參數。在Dean Edwards的base2庫里有個格式化的函數,展示了這個靈活性。

復制代碼 代碼如下:
function format(string) {  
  var args = arguments;  
  var pattern = new RegExp(“%([1-" + arguments.length + "])”, ”g”);  
  return String(string).replace(pattern, function(match, index) {  
    return args[index];  
  });  

};

我們提供了一個模板字符串,你可以用”%1”到“%9”給返回值添加一個占位符。然后提供給九個其他參數插入。

復制代碼 代碼如下:
format(“And the %1 want to know whose %2 you %3″, ”papers”, ”shirt”, ”wear”);

上面的代碼將返回:And the papers want to know whose shirt you wear" .
有件事情我們需要注意下,在定義函數的時候,我們只規定了一個參數,string。Javascript允許我們傳遞任何數量的參數到一個函數里,不管怎么定義這個函數。Arguments對象對這些都是允許的。
三、把arguments對象轉換成一個真正的數組
雖然arguments對象不是一個真正的javascript數組,但是我們還是可以輕易的把它轉換成標準的數據 ,然后進行數組操作。
復制代碼 代碼如下:
var args = Array.prototype.slice.call(arguments);

那么現在這個變量args就含有一個含有函數所有參數的標準javascript數組對象。
四、通過預置的arguments對象創建函數
Arguments對象允許我們去執行所有類型的javascript方法。這邊附上一個makeFunc函數的定義。這個函數允許我們去提供一個函數引用和這個函數的所有參數。他將返回一個匿名函數去調用你規定的函數,也提供了匿名函數調用時所附帶的參數。
復制代碼 代碼如下:
function makeFunc() {  
  var args = Array.prototype.slice.call(arguments);  
  var func = args.shift();  
  return function() {  
    return func.apply(null, args.concat(Array.prototype.slice.call(arguments)));  
  };  
}

第一個argument對象給makeFunc提供了你想調用的函數的引用。他是從arguments數組里移除的。然后makeFunc返回了一個匿名函數去運行規定的方法。
第一個應用的argument指向了函數調用的范圍,主要是函數內部關鍵部分所指向的。我們先保持這個為null。第二個arguments是一個 數組,會為這個函數轉變為arguments對象。makeFunc把原始的數組值串聯到arguments對象里提供給匿名函數和所調用函數的數組。
你需要輸出一個模板總是相同的位置,這樣就可以不用總是在每次引用模板的時候調用format函數。你可以使用makeFunc的通用功能去返回可以調用format然后自動補充模板的函數。

復制代碼 代碼如下:
var majorTom = makeFunc(format, ”This is Major Tom to ground control. I'm %1.”);

你可以像這樣調用majorTom函數:

復制代碼 代碼如下:
majorTom(“stepping through the door”);  
majorTom(“floating in a most peculiar way”);

每一次你調用majorTom,它會同時調用format函數和第一個argument,已經寫好的模板。那么將返回
復制代碼 代碼如下:
“This is Major Tom to ground control. I'm stepping through the door.”  
“This is Major Tom to ground control. I'm floating in a most peculiar way.”

五、創建引用自身的函數
你可能覺得這樣很酷,不過,arguments還有更多的驚喜。他還有其他有用的特性:callee方法 。Arguments.callee包括了一個函數的引用去創建一個argument對象。那么該如何使用呢?
Arguments.callee方法能讓一個匿名函數很方便的指向本身。
Repeat是一個承載了一個函數引用和兩個數字的函數。第一個數字是函數調用幾次,第二個數字是每個調用的間隔時間,單位是毫秒。
復制代碼 代碼如下:
function repeat(fn, times, delay) {  
  return function() {  
    if(times亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美精品一本久久男人的天堂| 欧美日韩成人在线视频| 久久99久久久久久久噜噜| 一区二区三区在线播放欧美| 亚洲国产精品电影| 亚洲影院色无极综合| 日韩视频免费观看| 国产91精品久久久久| 亚洲精品99久久久久中文字幕| 超碰91人人草人人干| 欧美精品在线播放| 91亚洲国产成人精品性色| 亚洲电影免费在线观看| 日韩在线视频中文字幕| 国产精品永久免费观看| 97香蕉久久超级碰碰高清版| 久久av在线看| 久久久久久97| 亚洲精品久久久一区二区三区| 中文字幕国产日韩| 97成人精品区在线播放| 91在线播放国产| 久久久久久久国产精品| 精品久久久在线观看| 久热精品在线视频| 亚洲香蕉av在线一区二区三区| 亚洲精品国产品国语在线| 欧美理论片在线观看| 久久精品视频网站| 黄网站色欧美视频| 国产精品福利观看| 国产成人精品免高潮在线观看| 国精产品一区一区三区有限在线| 在线日韩中文字幕| 一区二区欧美日韩视频| 国产精品69精品一区二区三区| 日产日韩在线亚洲欧美| 欧美高清视频免费观看| 91精品视频观看| 日本午夜精品理论片a级appf发布| 国产999精品| 一区二区欧美日韩视频| 久久久久亚洲精品成人网小说| 国产欧美精品日韩| www.午夜精品| 日韩精品中文字幕久久臀| 91精品国产777在线观看| 久久久国产精品视频| 亚洲国产精品推荐| 伊人伊成久久人综合网小说| 久久成人综合视频| 91手机视频在线观看| 国产精品久久久久久久午夜| 亚洲电影中文字幕| 久久久av免费| 国产精品福利无圣光在线一区| 色哟哟亚洲精品一区二区| 91社影院在线观看| 日韩最新免费不卡| 欧美亚洲国产日韩2020| 热久久99这里有精品| 欧美性高跟鞋xxxxhd| 亚洲欧美激情精品一区二区| 久久国产精品电影| 久久九九有精品国产23| 久久亚洲精品一区| 久久精品人人做人人爽| 亚洲欧美日韩网| 亚洲大胆人体视频| 成人欧美一区二区三区在线| 7777免费精品视频| 在线精品国产成人综合| 欧美成人精品一区二区| 亚洲欧美日韩成人| 国产精品久久激情| 欧美日韩亚洲国产一区| 一区二区日韩精品| 久久精品色欧美aⅴ一区二区| 2018国产精品视频| 欧美成人午夜激情视频| 国产aaa精品| 久久久久久久久电影| 日韩精品在线观看一区二区| 日本一区二区三区在线播放| 国产精品丝袜久久久久久高清| 色777狠狠综合秋免鲁丝| 久久人人爽亚洲精品天堂| 精品一区二区电影| 亚洲欧美日韩一区二区在线| 日韩高清电影免费观看完整| 精品视频一区在线视频| 亚洲高清免费观看高清完整版| 日韩hd视频在线观看| 红桃视频成人在线观看| 日韩欧美视频一区二区三区| 欧美最猛性xxxxx亚洲精品| 中文字幕亚洲欧美日韩在线不卡| www欧美xxxx| 在线观看日韩专区| 亚洲第一区中文99精品| 久久久久久久亚洲精品| 日产精品99久久久久久| 国产精品久久久久久久9999| 精品国产一区二区三区久久| xxx成人少妇69| 亚洲国产精品成人一区二区| 欧美另类在线观看| 久久久久99精品久久久久| 亚洲精选在线观看| 日本久久久久久久久| 88xx成人精品| 91中文在线视频| 久久人体大胆视频| 色偷偷偷亚洲综合网另类| 久久久久久久久国产| 国产精品视频自在线| 夜夜嗨av色综合久久久综合网| 精品国产依人香蕉在线精品| 2020国产精品视频| 日韩亚洲在线观看| 欧美中文字幕在线播放| 国产中文字幕91| 国产在线播放不卡| 久久久久久久成人| 超在线视频97| 亚洲一区久久久| 精品久久久久久久中文字幕| 日韩电影在线观看中文字幕| 亚洲欧美中文日韩v在线观看| 国产精品大陆在线观看| 成人在线中文字幕| 亚洲欧美在线免费观看| 国产精品久久久久久搜索| 国产区精品视频| 国产成人精品久久久| 欧美国产亚洲视频| 欧美乱大交xxxxx另类电影| 久久精品久久久久久| 国产精品扒开腿做爽爽爽的视频| 久久久久亚洲精品国产| 98视频在线噜噜噜国产| 亚洲色图综合久久| 91老司机在线| 最近免费中文字幕视频2019| 久久影视三级福利片| 欧美有码在线观看| 欧美在线激情视频| 78色国产精品| 日韩国产高清视频在线| 亚洲精品资源在线| 日韩在线www| 国产亚洲成av人片在线观看桃| 国产精品第10页| 秋霞av国产精品一区| 国产日韩在线免费| 欧美久久精品一级黑人c片| 综合网日日天干夜夜久久| 国产精品情侣自拍| 国产精品香蕉在线观看| 91久久精品国产91久久| 中文字幕日韩欧美在线| 日本久久91av| 欧美日韩国产精品一区二区三区四区| 成人激情在线观看|