12

JavaScript 重新定义了数组的含义,因为数组是一个具有.length属性和方法的对象,例如.slice().join()

jQuery 将 jQuery 对象定义为“Array like”,因为它有一个length属性,但没有某些数组方法,例如join().

如果我将 jQuery 对象定义为一个对象,而忘记提及与数组有关的任何事情,我将如何定义它?它除了长度还有什么属性?

我猜所有的方法都是你在文档中看到的,远远超过数组中的方法数量。

4

2 回答 2

39

jQuery 对象类似于数组,这意味着它包含零个或多个索引(名称是从零开始的正整数的属性)。除了这些索引之外,jQuery 对象还包含以下属性:

  • length
  • context
  • selector

还有大约 140 个继承的方法(在jQuery.prototype对象上定义 - 你可以做console.dir(jQuery.prototype)一个完整的列表......)。

请注意,jQuery 对象包含(或继承)Array 方法(slice、substr、...)。如果要在 jQuery 对象上执行这些方法,请使用call/ apply


例如,如果您在页面上有 3 个 TEXTAREA 元素并且您这样做:

var j = $('textarea');

那么这个jjQuery 对象将包含以下属性:

  • 0- 引用第一个 TEXTAREA 元素
  • 1- 引用第二个 TEXTAREA 元素
  • 2- 引用第三个 TEXTAREA 元素
  • length- 这是3
  • context- 对document对象的引用
  • selector- 这是'textarea'
  • 加上所有那些继承的方法......
于 2011-06-22T19:25:33.640 回答
2

jQuery 对象是一个具有

  • 长度属性
  • 引用来自选择的项目的数字属性 (0,1,2,3...)
  • 绑定到 jQuery 函数
  • 额外的 jQuery 属性

长度和数值属性允许对象像数组一样响应。您可以在for循环中运行它或使用类似mapeach在其上的函数。

我建议使用浏览器的调试器或 Firebug 并检查 jQuery 对象。这将教你很多关于它的结构的知识。

于 2011-06-22T19:22:18.423 回答