为了账号安全,请及时绑定邮箱和手机立即绑定

已采纳回答 / 艾伦Aaron
开始有点迷茫,慢慢的深入
不太好理解
这里需要只需来可能有些API上是andSelf,因为就Query的api是这样写的,andSelf现在是.addBack()的一个别名。在jQuery1.8和更高版本中应使用.addBack()

源码其实也是这样的

jQuery.fn.andSelf = jQuery.fn.addBack
已经修改了,回溯的方法是end
没有andBack这个函数
jQuery内部使用了,具体
pushStack: function(elems) {
var ret = jQuery.merge(this.constructor(), elems);
ret.prevObject = this;
ret.context = this.context;
return ret;
},
this.constructor() 指向了jQuery类
我是模拟的代码,这个是模拟jquery的机制,如果要完整的实现,代码量相当的大的。选择器sizzle就有2000多行
jQuery就是这样实现的,其实原理很简单,无非就是保存了上一次的引用,
_$ = window.$;
window.$ = _$;
就是一个交换的原理,如果调用了noConflict方法,就把之前保存的_$覆盖当前的$
要特别注意的事,必须在加载jQuery之前已经存在一个$命名空间的库,否则_$ = window.$就没有意义了
原来从集合中从末尾开始倒数取值是这样做的哇:
num < 0 ? this[num + this.length] : this[num]
学习了
额,写错了,是andSelf
addSelf竟然已被废除,换成addBack了
$$().setName('慕课网-Aaron').getName();或
$$(1).setName('慕课网-Aaron').getName();没区别呀?
这样的话i的初始值是不是该为0
我没搞懂constructor: ajQuery是什么作用。constructor好像不常用
fn是prototype的缩写,别名。也就是看到的这个:
jQuery.fn = jQuery.prototype = {
init:function(){
return this
}
首先,右边最后那段代码init函数少传个selector参数,再者,init函数里面应该返回this吧?
为什么jquery使用init方法就能避免无限递归呢?应该这样理解吗?:
通过init为桥梁返回该对象,避免了new该对象(实际也是在调用),导致无限递归。
简单的无限递归模拟:
function ajQuery = (selector) {
return new ajQuery(selector);
}
且是var而不是Var
课程须知
源码的阅读不是一蹴而就的,需要大家有一定的功底,比如jQuery的基础运用以及API的熟悉度,除此之外要有牢固的javascript、DOM、CSS的基础功底,甚至还需要理解常见的设计模式、数据结构等等。当然大家也不要被这些给吓住了,理解,总是需要一种慢慢的学习过程。
老师告诉你能学到什么?
通过本课程的学习,您可以由浅入深地剖析jQuery库的设计与实现。 其中我们围绕的重心: 1、设计理念 2、结构组织 3、接口设计 4、模式运用 5、场景套用

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!

本次提问将花费2个积分

你的积分不足,无法发表

为什么扣积分?

本次提问将花费2个积分

继续发表请点击 "确定"

为什么扣积分?

举报

0/150
提交
取消