2012-08-12 55 views
1

我已經設法做一個公平的位與jquery與這個小細節躲過我:它是如何應用下標運算符的jquery調用的結果,這似乎返回的DOM元素在該索引? Javascript不支持運算符重載,所以我猜它實際上是返回類型'數組',但你也可以在這個數組上使用jquery方法的全部範圍,但是隻查看源代碼,我只看到'slice'和「推動」添加應用到Array.prototype ...jquery對象性質

我可以有這個主題領域內的一些問題,一旦我知道答案,這一個...

+0

@Fresheyeball - 您的編輯不正確。 Rob F正在具體詢問_jQuery_對象,以及它們爲什麼像數組一樣行事。 (答案與_JavaScript_對象在一般意義上的工作方式有關,但仍然...) – nnnnnn 2012-08-12 08:02:04

+0

@nnnnnn我的歉意,我一定誤解了這個問題。 – Fresheyeball 2012-08-12 08:03:08

回答

3

您可以訪問的任何性能使用「數組樣式」的JavaScript對象方括號語法:

var someObj = { 
     someProp : "test" 
    }; 

alert(someObj["someProp"]); // alerts "test" 

jQuery已將su請注意,從$()函數返回的對象具有與數字索引對應的屬性,以及比最高數字索引高一個的length屬性。

someObj[0] = "test"; 
someObj[1] = "whatever"; 
someObj.length = 2; 

簡單(非jQuery的)演示:http://jsfiddle.net/nnnnnn/pguDH/

注意在實踐對象的屬性名稱總是字符串。如果您提供一個數字,它將被轉換爲一個字符串。甚至可以用字符串訪問「真實」陣列元素:

someArray["1"] 
// give same results as 
someArray[1] 
+0

啊我看到了,所以它沒有按照我的想法返回一個數組。聰明。 JS對我來說似乎是一種有趣的語言,在某些方面非常強大,而不是其他方面。 無論如何,thx爲清理起來。 – 2012-08-12 08:01:14

+0

不客氣。如果你真的需要標準數組中的DOM元素(因爲,例如,你想能夠使用其他數組方法),你可以使用jQuery的['.toArray()'方法](http://api.jquery的.com /指定者/)。或者,根據你想要做什麼,你可以使用'.apply()'或'.call()'在jQuery對象上使用'Array'方法。 – nnnnnn 2012-08-12 08:08:20