我收到了关于jQuery架构的另一个问题。 $('div')
构造一个新jQuery
对象:为什么可以像查询数组一样查询jQuery('div')?
$('div') instanceof jQuery; // true
我想知道为什么它是可以查询它像一个数组,allthough它不是一个数组?
$('div')[0]; // returns the first div in the document as a DOM node.
$.isArray($('div')); // false
我只是喜欢这种语法,它看起来很干净!我也注意到了这个返回DOM节点作为数组:
console.log($('div'));
有人可以解释我如何实现这种行为我自己的对象?
我自己的方法是使一些方法,像这样的数组:
var a = ['a', 'b', 'c'];
a.method = function(){ return 'test'; };
a; // ['a', 'b', 'c']
a[0]; // 'a'
a.method(); // 'test'
然而,这似乎并没有被jQuery不会的方式,因为这实际上是一个数组:
$.isArray(a); // true
我想知道jQuery如何做到这一点学习,看看它是否比我更好的解决方案。
可以使用'[]'符号访问* *的任何财产。不仅仅是指数。所以就像'$('div')[0]'一样,你可以执行$('div')['jquery']',这会给你jQuery的版本号。 – 2012-01-09 18:14:10
@amnotiam我知道。但是当我在控制台中打印常用对象时,它们不输出数组。 – 2012-01-09 18:14:53
啊,如果你特别要求控制台的输出,那么它确实就是控制台对你输入的内容做出最好的猜测。 [jAndy的回答](http://stackoverflow.com/a/8793090/1106925)显示了控制台通常会做什么。 – 2012-01-09 18:16:36