jQuery源码分析-----pushStack

pushStack是jQuery底层方法

pushStack方法虽然在高层不会用到,但很多方法都会调用它

举例:
html结构为ul下5个li

var li = $('li');
var s = li.slice(2);
var end = s.end();

pushStack:
// Take an array of elements and push it onto the stack
// (returning the new matched element set)
pushStack: function( elems ) {

    // Build a new jQuery matched element set
    var ret = jQuery.merge( this.constructor(), elems );

    // Add the old object onto the stack (as a reference)
    ret.prevObject = this;
    ret.context = this.context;

    // Return the newly-formed element set
    return ret;
}
slice: function() {
    var temp = slice.apply( this, arguments );
    return this.pushStack( temp );
}
  1. 当执行li.slice(2)时,进入slice方法,this指的是li,temp为后3个li,返回this.pushStack,进入pushStack方法,参数为temp,首先将temp封装成jQuery对象并赋值给ret,即待返回的对象,将this赋值给retprevObject属性(方便后续调用end方法),返回ret。此时ret的结构包括
{
    jQuery:temp
    prevObject:li
    context:document
}
  1. 当执行s.end()时:
end: function() {
    return this.prevObject || this.constructor(null);
},

返回sprevObject,即li

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值