JavaScipt的jQuery源码分析
此项目是jQuery源码分析, jQuery一共13个模块,从2.1版开始jQuery支持通过AMD模块划分,jQuery在最开始发布的1.0版本是很简单的,只有CSS选择符、事件处理和AJAX交互3大块。 jQuery3.0 新特性有:1.移除旧的IE工作区;2.jQuery 3.0运行在Strict Mode;3.引进for...of循环;4.对包含特殊含义的字符串提供转义的新方法等等。
应用介绍
类一:
```
function ajQuery() {
this.name = 'jQuery';
this.sayName = function(){
return this.name
}
var a = new ajQuery()
var b = new ajQuery()
var c = new ajQuery()
```
类二:
```
function ajQuery() {
this.name = 'jQuery'
}
ajQuery.prototype = {
sayName: function() {
return this.name
}
}
var a = new ajQuery()
var b = new ajQuery()
var c = new ajQuery()
```
类一与类二产生的结构几乎是一样的,而本质区别就是:类二new产生的a、b、c三个实例对象共享了原型的sayName方法,这样的好处节省了内存空间,类一则是要为每一个实例复制sayName方法,每个方法属性都占用一定的内存的空间,所以如果把所有属性方法都声明在构造函数中,就会无形的增大很多开销,这些实例化的对象的属性一模一样,都是对this的引用来处理。除此之外类一的所有方法都是拷贝到当前实例对象上。类二则是要通过scope连接到原型链上查找,这样就无形之中要多一层作用域链的查找了。
jQuery对象的构建如果在性能上考虑,所以就必须采用原型式的结构:
```
jQuery = function( selector, context ) {
return new jQuery.fn.init( selector, context );
}
jQuery.fn = jQuery.prototype = {
init:function(){
return this
},
jquery: version,
constructor: jQuery,
………………
}
var a = $() ;
```
使用原型结构,性能上是得到了优化,但是ajQuery类这个结构与目标jQuery的结构的还是有很大不一致:
JavaScipt的jQuery源码分析。
©版权声明:本文内容由互联网用户自发贡献,版权归原创作者所有,本站不拥有所有权,也不承担相关法律责任。如果您发现本站中有涉嫌抄袭的内容,欢迎发送邮件至: www_apollocode_net@163.com 进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。
转载请注明出处: apollocode » JavaScipt的jQuery源码分析
文件列表(部分)
名称 | 大小 | 修改日期 |
---|---|---|
readme.md | 6.95 KB | 2020-01-30 |
发表评论 取消回复