JavaScript 重新定义了数组的含义,因为数组是一个具有.length
属性和方法的对象,例如.slice()
和.join()
。
jQuery 将 jQuery 对象定义为“Array like”,因为它有一个length
属性,但没有某些数组方法,例如join()
.
如果我将 jQuery 对象定义为一个对象,而忘记提及与数组有关的任何事情,我将如何定义它?它除了长度还有什么属性?
我猜所有的方法都是你在文档中看到的,远远超过数组中的方法数量。
JavaScript 重新定义了数组的含义,因为数组是一个具有.length
属性和方法的对象,例如.slice()
和.join()
。
jQuery 将 jQuery 对象定义为“Array like”,因为它有一个length
属性,但没有某些数组方法,例如join()
.
如果我将 jQuery 对象定义为一个对象,而忘记提及与数组有关的任何事情,我将如何定义它?它除了长度还有什么属性?
我猜所有的方法都是你在文档中看到的,远远超过数组中的方法数量。
jQuery 对象类似于数组,这意味着它包含零个或多个索引(名称是从零开始的正整数的属性)。除了这些索引之外,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'
jQuery 对象是一个具有
长度和数值属性允许对象像数组一样响应。您可以在for
循环中运行它或使用类似map
或each
在其上的函数。
我建议使用浏览器的调试器或 Firebug 并检查 jQuery 对象。这将教你很多关于它的结构的知识。