如何使一个函数对象类似于jQuery中的函数对象?

时间:2016-06-27 11:41:07

标签: javascript jquery function object

我有两个问题,请给我一些建议。

我试图找出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'))

然而,当我检查控制台时,

enter image description here

正如您所看到的,jQuery在对象前面没有jQuery,而对象更像是由[ ]引用的数组,而原型是Object[0]。< / p>

__proto__: Object[0]内没有constructor

我的问题是jquery如何在没有前面的函数名的情况下创建一个新的函数实例,这是什么__proto__: Object[0]

非常感谢!

1 个答案:

答案 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]

请告知我是不是错了......