jQuery.fn.init

本文深入探讨了jQuery的构造机制及初始化过程。解释了jQuery如何通过new原型prototype上的init方法作为构造器,以及如何处理两种不同调用方式:静态与原型。此外,还详细介绍了jQuery.fn.init方法的工作原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

$() 即调用了jQuery.fn.init方法

jQuery = function( selector, context ) {
    return new jQuery.fn.init( selector, context, rootjQuery );
}

jQuery通过new原型prototype上的init方法当作构造器,那么init的原型链方法就是实例的方法了,所以jQuery通过2个构造器划分2种不同的调用方式,一种是静态,一种是原型。
方法是共享的,并且实例方法取于静态方法,2个构造器是完全隔离的 ,这个要如何处理?

jQuery.fn = jQuery.prototype = {
    name: 'cc',
    init: function( selector, context, rootjQuery ) {
    var match, elem;
    if ( !selector ) {
        return this;
    }
    if ( typeof selector === "string" ) {
       // code
    } else if ( selector.nodeType ) {
       this.context = this[0] = selector;
       this.length = 1;
       return this;
    } else if ( jQuery.isFunction( selector ) ) {
       return rootjQuery.ready( selector );
    }
    if ( selector.selector !== undefined ) {
       this.selector = selector.selector;
       this.context = selector.context;
    }
    return jQuery.makeArray( selector, this );
    }
    constructor: jQuery
}
jQuery.fn.init.prototype = jQuery.fn;

通过原型传递解决问题,把jQuery的原型传递给jQuery.prototype.init.prototype。换句话说jQuery的原型对象覆盖了init构造器的原型对象,因为是引用传递所以不需要担心这个循环引用的性能问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值