我有两个问题,请给我一些建议。
我试图找出jQuery的工作原理。在阅读完代码之后,我发现jQuery只是从函数对象返回this
。第2975
行附近有一个简单的例子。
所以它将类似于下面的代码:
var a = new function a ( ) {
return this;
};
a[0] = document.querySelectorAll( 'div#1' ) ;
console.log(a)
var b = new function ( ) {
this[0] = document.querySelectorAll( 'div#1' ) ;
return this;
};
console.log(b)
console.log(jQuery('#1'))
然而,当我检查控制台时,
正如您所看到的,jQuery在对象前面没有jQuery
,而对象更像是由[ ]
引用的数组,而原型是Object[0]
。< / p>
且__proto__: Object[0]
内没有constructor
。
我的问题是jquery如何在没有前面的函数名的情况下创建一个新的函数实例,这是什么__proto__: Object[0]
?
非常感谢!
答案 0 :(得分:0)
我终于找到了他们是如何做到的。
$(this)
或$(selector)
实际上是返回Array对象!!!!我仍然无法找到jQuery在哪个部分这样做,但他们所做的就像下面的
var a = new function a ( ) {
return this;
};
var b = [ document.querySelectorAll( 'div#1' ) ] ;
b.__proto__ = new a;
console.log (b)
上面会返回类似jQuery的对象。
区别在于b.__proto__
是insteadof Object[0]
请告知我是不是错了......