jQuery源码分析-----jQuery.fn.init.prototype=jQuery.fn=jQuery.prototype

jQuery是面向对象的设计思想。


new方法的核心是返回一个新对象,将原型链和实例的this关联起来,而jQuery选择器在使用的时候不必使用this,原因是在构造函数内部调用了new。

例如:

var $$ = ajQuery = function(selector) {
    if(!(this instanceof ajQuery)){
        return new ajQuery(selector);
    }
    this.selector = selector;
    return this
}

但是绝对不能直接在构造函数中返回new ajQuery()因为会循环调用,导致内存泄漏。
jQuery是这样做的:

var $$ = ajQuery = function(selector) {
 return new ajQuery.fn.init(selector);
}

可是这里返回的并不是 ajQuery的实例啊,于是jQuery这么做:

jQuery.prototype.init.prototype=jQuery.fn

于是new ajQuery.fn.init相当于取到jQuery的原型,由于是引用传递,因此不必担心性能问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值