成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

譯文: JavaScript中類數(shù)組對(duì)象

lbool / 626人閱讀

摘要:所以我說的這些類數(shù)組對(duì)象是什么它們有一些,其中包括是一個(gè)很特殊的變量,你再所有函數(shù)體內(nèi)都可以訪問到。讓類數(shù)組對(duì)象成為一個(gè)數(shù)組當(dāng)然這個(gè)標(biāo)題是不太準(zhǔn)確的,假如我們需要將這些類數(shù)組對(duì)象變成數(shù)組一樣,我們需要建立一個(gè)新的數(shù)組。

它看起來像是一個(gè)數(shù)組,而且它有一個(gè)length屬性,然而它并不是一個(gè)數(shù)組。JavaScript有時(shí)候是一門很怪異的語(yǔ)言,因?yàn)槟愫茈y定義一個(gè)數(shù)組的概念而沒有什么例外的。
所以我說的這些類數(shù)組對(duì)象是什么?它們有一些,其中包括arguments,arguments是一個(gè)很特殊的變量,你再所有函數(shù)體內(nèi)都可以訪問到。

1. arguments

假如你在一個(gè)工具(firebug)中檢查arguments這個(gè)變量,你會(huì)注意到它打印出來像是一個(gè)數(shù)組。它有按次序排列的元素,還有一個(gè)length屬性。

var testFunction = function() {
  console.log(arguments);
  console.log(arguments.length);
};

所以我在抱怨什么?嘗試arguments.shift(),報(bào)錯(cuò)顯示arguments.shift() isn"t a function,但是shift()是數(shù)組的一個(gè)函數(shù)。嘗試console.log(arguments.constructor),它會(huì)打印Object(),同時(shí)假如你輸入的是[].constructor,它會(huì)打印Array[]。這是不是很奇怪?
這當(dāng)然不僅局限于arguments,看起來很多DOM集合都會(huì)返回這種對(duì)象,例如document.getElementsByTagName(), document.images, document.childNodes.在某些情況下,這些類似數(shù)組的更適合轉(zhuǎn)變?yōu)橐粋€(gè)數(shù)組。

讓類數(shù)組對(duì)象成為一個(gè)數(shù)組

當(dāng)然這個(gè)標(biāo)題是不太準(zhǔn)確的,假如我們需要將這些類數(shù)組對(duì)象變成數(shù)組一樣,我們需要建立一個(gè)新的數(shù)組。

var testFunction = function() {
  // Create a new array from the contents of arguments
  var args = Array.prototype.slice.call(arguments);

  var a = args.shift();
  console.log("The first argument is: %s", a);

  // send the remaining arguments to some other function
  someOtherFunction(args);
};

顯然,關(guān)鍵的地方在Array.prototype.slice.call(arguments),拆開它仔細(xì)每個(gè)部分。

Array 這是我們想要的base object的名稱

prototype 這可以被認(rèn)為是一個(gè)數(shù)組實(shí)例方法的命名空間

slice 提取一個(gè)數(shù)組的一部分,并返回一個(gè)新的數(shù)組,沒有一個(gè)開始和結(jié)束索引,它只返回?cái)?shù)組的副本.

call 這是一個(gè)非常有用的函數(shù),允許你在調(diào)用一個(gè)對(duì)象的函數(shù),然后在另一個(gè)函數(shù)的上下文中使用

另一個(gè)方面,如果你曾經(jīng)使用原型框架,你可以通過$A()轉(zhuǎn)化這些類數(shù)組對(duì)象成為數(shù)組。
談到$A,如果你不喜歡打上面那么長(zhǎng)的字符串代碼,并且你不使用Prototype。然后,你可以創(chuàng)建一條捷徑,就像Prototype folks:

var $A = function(obj) {
  return Array.prototype.slice.call(obj);
};

// Example usage:
$A(document.getElementsByTagName("li"));

原文地址:Array-like Objects in JavaScript

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/86425.html

相關(guān)文章

  • [譯文] JavaScript工作原理:V8引擎內(nèi)部+5條優(yōu)化代碼的竅門

    摘要:本文將會(huì)深入分析的引擎的內(nèi)部實(shí)現(xiàn)。該引擎使用在谷歌瀏覽器內(nèi)部。同其他現(xiàn)代引擎如或所做的一樣,通過實(shí)現(xiàn)即時(shí)編譯器在執(zhí)行時(shí)將代碼編譯成機(jī)器代碼。這可使正常執(zhí)行期間只發(fā)生相當(dāng)短的暫停。 原文 How JavaScript works: inside the V8 engine + 5 tips on how to write optimized code 幾周前我們開始了一個(gè)系列博文旨在深入...

    dreamans 評(píng)論0 收藏0
  • JavaScript如何工作:V8引擎深入探究 + 優(yōu)化代碼的5個(gè)技巧(譯文

    摘要:引擎可以是一個(gè)標(biāo)準(zhǔn)的解釋器,也可以是一個(gè)將編譯成某種形式的字節(jié)碼的即時(shí)編譯器。和其他引擎最主要的差別在于,不會(huì)生成任何字節(jié)碼或是中間代碼。不使用中間字節(jié)碼的表示方式,就沒有必要用解釋器了。 原文地址:https://blog.sessionstack.com... showImg(https://segmentfault.com/img/bVVwZ8?w=395&h=395); 數(shù)周之...

    William_Sang 評(píng)論0 收藏0
  • 不再彷徨:完全弄懂JavaScript中的this(譯文總結(jié))

    摘要:至于,其只是以數(shù)組的方傳入?yún)?shù),其它部分是一樣的,如下它們也可用于在中的類繼承中,調(diào)用父級(jí)構(gòu)造器。間接調(diào)用,調(diào)用了父級(jí)構(gòu)造器對(duì)比方法和,它倆都立即執(zhí)行了函數(shù),而函數(shù)返回了一個(gè)新方法,綁定了預(yù)先指定好的,并可以延后調(diào)用。 其實(shí)this是一個(gè)老生常談的問題了。關(guān)于this的文章非常多,其實(shí)我本以為自己早弄明白了它,不過昨天在做項(xiàng)目的過程中,還是出現(xiàn)了一絲疑惑,想到大概之前在JavaScri...

    YanceyOfficial 評(píng)論0 收藏0
  • [譯文] JavaScript工作原理:內(nèi)存管理+如何處理4種常見的內(nèi)存泄露

    摘要:本系列的第一篇文章著重提供一個(gè)關(guān)于引擎運(yùn)行時(shí)和調(diào)用棧的概述。在硬件層面,計(jì)算機(jī)內(nèi)存由大量的觸發(fā)器組成。每個(gè)觸發(fā)器包含幾個(gè)晶體管能夠存儲(chǔ)一個(gè)比特譯注位??梢酝ㄟ^唯一標(biāo)識(shí)符來訪問單個(gè)觸發(fā)器,所以可以對(duì)它們進(jìn)行讀寫操作。比特稱為個(gè)字節(jié)。 原文 How JavaScript works: memory management + how to handle 4 common memory lea...

    adam1q84 評(píng)論0 收藏0
  • TypeScript入門學(xué)習(xí)之路

    摘要:學(xué)習(xí)之路學(xué)習(xí)之路安裝環(huán)境起步開發(fā)工具自動(dòng)編譯文件中的數(shù)據(jù)類型中的函數(shù)中類的定義繼承中的繼承中的繼承類的靜態(tài)屬性和靜態(tài)方法類的多態(tài)的抽象類中的接口中的泛型學(xué)習(xí)之路安裝環(huán)境查看版本起步新建通過命令編譯此時(shí)路徑下 ...

    jemygraw 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<