jQuery源码解析--对象创建
2015-04-07 19:03
435 查看
本系列博客是我在学习了慕课网Aaron老师的jQuery源码解析课程之后再结合自我的理解做的一系列总结,代码和实际源码可能有点出入,请以源码为准,参考的jQuery版本为2.1.3。
对象的创建
我们创建对象比较常用的方式有:直接用对象直接量、工厂模式、构造函数模式、原型模式。但在一些类库当中,用得最频繁的还是构造函数+原型的模式。
在jquery中,采取的手段是把原型上的一个init方法作为构造器
(补充:
通过new操作符构建一个对象,一般经过四步:
A.创建一个新对象
B.将构造函数的作用域赋给新对象(所以this就指向了这个新对象)
C.执行构造函数中的代码
D.返回这个新对象
最后一点就说明了,我们只要返回一个新对象即可。其实new操作符主要是把原型链跟实例的this关联起来,这才是最关键的一点,所以我们如果需要原型链就必须要new操作符来进行处理。否则this则变成window对象了。
)
接下来将jQuery的原型赋值给jQuery.fn
然后
这段代码就是整个结构设计的最核心的东西了,有这样的一个处理,整个结构就活了!
看看init的的构造图:
通过原型传递解决问题,把jQuery的原型传递给jQuery.prototype.init.prototype。换句话说jQuery的原型对象覆盖了init构造器的原型对象,因为是引用传递所以不需要担心这个循环引用的性能问题。
最后让我们来看一个实例:
对象的创建
我们创建对象比较常用的方式有:直接用对象直接量、工厂模式、构造函数模式、原型模式。但在一些类库当中,用得最频繁的还是构造函数+原型的模式。
在jquery中,采取的手段是把原型上的一个init方法作为构造器
var $ = jQuery = function(selector) { return new jQuery.fn.init(selector); };
(补充:
通过new操作符构建一个对象,一般经过四步:
A.创建一个新对象
B.将构造函数的作用域赋给新对象(所以this就指向了这个新对象)
C.执行构造函数中的代码
D.返回这个新对象
最后一点就说明了,我们只要返回一个新对象即可。其实new操作符主要是把原型链跟实例的this关联起来,这才是最关键的一点,所以我们如果需要原型链就必须要new操作符来进行处理。否则this则变成window对象了。
)
接下来将jQuery的原型赋值给jQuery.fn
jQuery.fn = jQuery.prototype = { init: function(selector) { // 初始化 }, constructor: jQuery }
然后
ajQuery.fn.init.prototype = ajQuery.fn;
这段代码就是整个结构设计的最核心的东西了,有这样的一个处理,整个结构就活了!
看看init的的构造图:
通过原型传递解决问题,把jQuery的原型传递给jQuery.prototype.init.prototype。换句话说jQuery的原型对象覆盖了init构造器的原型对象,因为是引用传递所以不需要担心这个循环引用的性能问题。
最后让我们来看一个实例:
var $ = jQuery = function(selector) { return new jQuery.fn.init(selector); };
jQuery.fn = jQuery.prototype = {
name: 'tt',
init: function(selector) {
return this;
},
constructor: jQuery
}
jQuery.fn.init.prototype = jQuery.fn;
document.getElementById('test').innerHTML = '我的名字叫做:' + $().name;
相关文章推荐
- JQuery源码解析-- 对象的创建
- jquery源码解析----对象的创建
- jquery源码解析:jQuery延迟对象Deferred(工具方法)详解1
- jQuery源码学习:使用隐藏的new来创建对象
- 源码-JavaScript&jQuery交互式前端开发-第3章-函数、方法与对象-使用字面量语法创建对象
- jquery源码解析:jQuery延迟对象Deferred(工具方法)详解2
- jQuery源码学习之对象创建与初始化
- jquery源码解析:val方法和valHooks对象详解
- jQuery深入之源码解析(三)——构造jQuery对象
- jQuery源码之创建jQuery对象
- 献给和我合作的过得前端童靴们:jquery源码分析--核心函数(使用函数作为参数创建jQuery对象)
- JQuery源码之“对象的结构解析”
- jQuery源码学习之对象创建与初始化
- Javascript笔记:jQuery源码分析以及从jQuery对象创建的角度理解extend方法的原理
- 源码-JavaScript&jQuery交互式前端开发-第3章-函数、方法与对象-使用构造函数语法创建对象
- jquery 1.7.2源码解析(二)构造jquery对象
- jquery源码解析:jQuery静态属性对象support详解
- jQuery源码分析以及从jQuery对象创建的角度理解extend方法的原理
- 献给和我合作的过得前端童靴们:jquery源码分析--核心函数(创建jquery空对象)
- JQuery源码解析---jQuery回调对象