为了账号安全,请及时绑定邮箱和手机立即绑定
理解:1.$(),jQuery()是执行一个函数,$和jQuery是函数名称,这个函数返回的是一个对象,所以里面是一个new表达式,但是名字不能是自己,否则无限循环。2.既然不是自己,其实可以理解为jQuery()返回的不是jQuery对象,而是jQuery.fn.init(一个名字而已)对象。3.但是为了统一和方法/属性的共用(理解原型链),jQUuery这样处理,jQuery.fn.init.prototype = jQuery.prototype.
后面还有4.............不能超过3000字
理解这个,大家必须先去理解,原型,原型链.......推荐“深入理解JavaScript系列”
讲解的真好
@vfan140 没有不对, options === 'memory' 是判定当前是memory的Callback 时, 就将data保存在memory中,以便下面的
if (memory) {
firingStart = start; //获取最后一值
_fire(memory);
}
这段代码使用,达到add回调函数时就执行这个回调函数的作用, 你说的那个写法是jQ源码里面的方式,其实道理一样的。JQ对传入的参数多进行了一步操作
代码很明显,options可能是对象,需要深拷贝deep
(options = arguments[i]) != null这边为何要赋值给options再操作呢?为何不直接操作arguments[i]
好抽象啊!
factory那边定义的?
说得太好了 “这是一种生活态度” 我经常问自己是不是为了加薪才看源码,其实是我心中有写个框架的小冲动
没有视频了嘛?都是这种文档代码类型的?
这里关系到一个extentd第一个参数 是否深度复制的处理
var object1 = {
banana: {weight: 52, price: 100},
};
var object2 = {
banana: {price: 200}
};
$.extend(object1, object2); //{banana: {price: 200}}
$.extend(ture,object1, object2); //{banana: {price: 200,weight: 52}}
jQuery是为了判断克隆是不是一个深层次的对象,用来逐个clone
aron 大神为什么extentd时候要判断是isPlainObject?
我能说,没看出什么不一样么?
上面加个 $jQuery.fn.init.prototype = $jQuery.fn; 就和jQuery 一样了
结合博客看
课程须知
源码的阅读不是一蹴而就的,需要大家有一定的功底,比如jQuery的基础运用以及API的熟悉度,除此之外要有牢固的javascript、DOM、CSS的基础功底,甚至还需要理解常见的设计模式、数据结构等等。当然大家也不要被这些给吓住了,理解,总是需要一种慢慢的学习过程。
老师告诉你能学到什么?
通过本课程的学习,您可以由浅入深地剖析jQuery库的设计与实现。 其中我们围绕的重心: 1、设计理念 2、结构组织 3、接口设计 4、模式运用 5、场景套用

微信扫码,参与3人拼团

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

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

本次提问将花费2个积分

你的积分不足,无法发表

为什么扣积分?

本次提问将花费2个积分

继续发表请点击 "确定"

为什么扣积分?

举报

0/150
提交
取消