jQuery源码解析--对象创建
来源:互联网 发布:通信行业网络优化 编辑:程序博客网 时间:2024/05/06 19:05
本系列博客是我在学习了慕课网Aaron老师的jQuery源码解析课程之后再结合自我的理解做的一系列总结,代码和实际源码可能有点出入,请以源码为准,参考的jQuery版本为2.1.3。
对象的创建
我们创建对象比较常用的方式有:直接用对象直接量、工厂模式、构造函数模式、原型模式。但在一些类库当中,用得最频繁的还是构造函数+原型的模式。
在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;
0 0
- jQuery源码解析--对象创建
- jquery源码解析----对象的创建
- JQuery源码解析---jQuery回调对象
- jQuery源码之创建jQuery对象
- jQuery源码学习(版本1.11)-创建jQuery对象
- jQuery源码学习之对象创建与初始化
- jQuery源码学习之对象创建与初始化
- JQuery validation源码解析
- jquery源码解析
- jquery源码解析
- jquery源码解析资料
- jQuery.extend()源码解析
- jQuery 源码解析(一)
- jquery源码解析1
- 浅谈jquery源码解析
- jQuery源码解析data
- 关于JQuery源码解析
- jquery.parser源码解析
- UESTC 914 -- 方老师分身 I(Dijkstra)
- 率失真
- 第5周项目静态成员的应用
- VISIO添加连接点
- spec 最简单的demo
- jQuery源码解析--对象创建
- HSV 空间在OPENCV 中的一些疑惑
- android广播机制
- 缓冲区溢出及gdp调试全过程
- windows核心编程学习笔记-上下文练习
- 使用EditPlus开发Java程序的配置
- C#的前世与今生
- php中try catch捕获异常实例详解
- hdu1698Just a Hook 线段树 成段更新水题