JavaScript重新定义了数组的含义,因为数组是一个具有.length
属性和.slice()
和.join()
等方法的对象。
jQuery将jQuery对象定义为"类数组",因为它有length
属性,但没有像join()
这样的特定数组方法。
如果我将jQuery对象定义为一个对象,而忘记提及与数组有关的任何内容,我将如何定义它?除了长度,它还有什么特性?
我想所有的方法都是您在文档中看到的,远远超过了数组中的方法数量。
length
context
selector
还有大约140个继承的方法(它们在jQuery.prototype
对象上定义——您可以执行console.dir(jQuery.prototype)
来获得完整的列表…)。
请注意,jQuery对象不包含(或继承)Array方法(slice、substr…)。如果要在jQuery对象上执行这些方法,请使用call
/apply
。
例如,如果页面上有3个TEXTAREA元素,并执行以下操作:
var j = $('textarea');
那么这个j
jQuery对象将包含以下属性:
0
-对第一个TEXTAREA元素的引用1
-对第二个TEXTAREA元素的引用2
-对第三个TEXTAREA元素的引用length
-即3
context
-对document
对象的引用selector
-即'textarea'
- 再加上所有继承的方法
- 长度属性
- 引用select中项目的数字属性(0,1,2,3…)
- 绑定到jQuery函数
- 其他jQuery属性
长度和数字属性允许对象像数组一样响应。您可以在for
循环中运行它,也可以在它上使用map
或each
等函数
我建议使用浏览器的调试器或Firebug来检查jQuery对象。这将教会你很多关于它的结构。