2012-08-12 57 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