jquery的亮点我目前学习到一下几点:

1.封装库利用window的挂载实现闭包。

库一定要封装来防止变量污染全局,方式要么对象,要么立即执行函数。jquery用了立即执行函数。因为立即执行函数里的变量我们无法在外部取得。我们通常做法是return 出一个函数,利用闭包。

但是,jquery没有return出来函数,而是直接将变量挂载在window上。

这样做的好处:不需要用一个变量来接住这个立即执行函数。

2. 直接返回的是jquery对象,而不是原生dom,并且每次执行都返回jquery对象;

因为jquery的作用就是简化操作。所以返回一个jquery对象,可以实现更快速的调用,这也是实现jquery连续调用的基础。

实现的方法是:返回init

3. 在原形上编程 : 

这是输出的$('.demo')对象。我们可以看出,他的构造函数式jquery.fn.init,这个很奇怪啊,怎么会是用它来当做构造函数呢?有什么好处?

一个最重要的好处就是可以让 jquery.prototype.init.prototype = jquery.prototype,这样就可以让jquery原形上的方法供给这个jquery对象使用了。

至此,我觉得jquery的最重要的核心部分是 jquery.prototype.init.,而不是jquery。

举个例子,好吧,在巴西吧,某位高官叫jquery.prototype,只手遮天,独当独大,是国家最重要领袖之一。他是个宠子狂魔, 这个官二代独苗,英文名字叫$,他很方便的就能填写一张任意金额的支票,就像是$('.demo'),支票金额就是参数‘.demo’。请问他为什么这么牛?为什么你不能,因为你没有一个好爹啊,它有jquery.prototype这个牛逼的爹。这个爹他有个手下叫做init,这个心思深重却坏心思的init,看出来jquery.prototype这位高官非常爱儿子,却不方便利用权利捞财怕坏了自己名声,既当官又发财,就对jquery.prototype这位位高权重的人说,干脆您做我爹吧,我好好对您儿子和您,您儿子想要什么,我都给他。借着富二代老爹高官的默许,init开了一国有企业,比如叫GJ电网。这个默许,就是代码jquery.prototype.init.prototype = jquery.prototype。就是相当于同意这个init都可以享受到(jquery.prototype的方法,jquery.prototype.init),于是他很快拥有了富可敌国的money,而富二代也可以随意的传函数填支票了,

 (function(){
jquery.prototype.init = function(selector){ //坏蛋init干的坏事
this.length = 0;
var dom ;
if(selector.indexOf('.') !== -1){
dom = document.getElementsByClassName(selector.slice(1));
}else if(selector.indexOf('#') !== -1){
dom = document.getElementById(selector.slice(1));
}
if(dom.length == 1){
this[0] = dom;
this.length ++;
} else if(dom.length > 1){
for(var i = 0; i < dom.length; i++){
this[i] = dom[i];
this.length ++
}
}
}
jquery.prototype.css = function(config){ //高官的权利很多
for(var i = 0; i < this.length; i++){
for(var pro in config){
this[i].style[pro] = config[pro]
}
}
return this;
}
function jquery(selector){ return new jquery.prototype.init(selector)
}
jquery.prototype.init.prototype = jquery.prototype
window.$ = window.jquery = jquery;
})() $('.demo').css({color:'red'})
console.log($('.demo'))

jquery的设计亮点的更多相关文章

  1. Jquery Mobile设计Android通讯录第二章

    本文是jQuery Mobile设计Android通讯录系统教程的第二篇,在上一篇教程中(http://publish.itpub.net/a2011/0517/1191/000001191561.s ...

  2. 使用Jquery Mobile设计Android通讯录

    本系列教程将指导大家一步步使用Jquery Mobile设计一个Android的通讯录应用.其中在应用的界面部分,将使用jQuery Mobile框架,并且会指导大家如何使Android中提供的web ...

  3. 《jQuery技术内幕:深入解析jQuery架构设计与实现原理》

    <jQuery技术内幕:深入解析jQuery架构设计与实现原理> 基本信息 作者: 高云 出版社:机械工业出版社 ISBN:9787111440826 上架时间:2014-1-10 出版日 ...

  4. jQuery架构设计与实现(2.1.4版本)

    市面上的jQuery书太多了,良莠不齐,看了那么多总觉得少点什么 对"干货",我不喜欢就事论事的写代码,我想把自己所学的知识点,代码技巧,设计思想,代码模式能很好的表达出来,所以考 ...

  5. jQuery技术内幕 深入解析jQuery架构设计与实现原理

    jquery的外衣 jquery是一个轻量级的JS框架 //以下截取自jquery源码片段 (function( window, undefined ) { /* 源码内容 */ })( window ...

  6. 从软件工程师的角度看MacBook Air的几个设计亮点

    我多年从事软件开发和运营工作,从未跟“设计”间断过.现在在设计一个全新saas产品:超级表格(www.domypp.com).最近买了台苹果最新款的笔记本电脑MacBook Air,从该产品功能设计和 ...

  7. selectors模块的设计亮点

    事件类型标志的选择 在selectors模块中的开头直接定义了事件类型的标志数字,选用的是(1 << 0)就是1代替EVENT_READ读操作:使用(1 << 1)就是2代替E ...

  8. 浅谈 jQuery 核心架构设计

    jQuery对于大家而言并不陌生,因此关于它是什么以及它的作用,在这里我就不多言了,而本篇文章的目的是想通过对源码简单的分析来讨论 jQuery 的核心架构设计,以及jQuery 是如何利用javas ...

  9. jQuery插件的编写相关技术 设计总结和最佳实践

    原文:http://www.itzhai.com/jquery-plug-in-the-preparation-of-related-technical-design-summary-and-best ...

随机推荐

  1. scipy.stats与统计学:4个概率分布:N,chi2,F,t

    scipy.stats与统计学:4个概率分布:N,chi2,F,t   四个常用分布的概率密度函数.分布函数.期望.分位数.以及期望方差标准差中位数原点矩: 1,正态分布: from scipy.st ...

  2. 微软 microsoft calendar control 11.0 控件下载

    微软 microsoft calendar control  11.0 控件下载 https://files.cnblogs.com/files/mqingqing123/csccal2.rar

  3. Error-MVC: “/”应用程序中的服务器错误。

    ylbtech-Error-MVC: “/”应用程序中的服务器错误. 1.返回顶部 1. “/”应用程序中的服务器错误. 运行时错误 说明: 服务器上出现应用程序错误.此应用程序的当前自定义错误设置禁 ...

  4. fopen_s遇到的一个问题

    今天使用公司代码的日志模块记录程序运行的相关信息,发现日志总是只有两条记录,即程序启动和结束,别的都没有.跟踪了很久,终于发现是日志输出模块被我修改了一个地方:把fopen改成了fopen_s,毕竟报 ...

  5. Tomcat参数设置,解决内存溢出问题

    Tomcat默认参数不适合生产环境使用,因此需要修改一些参数 1.修改启动时内存参数.并指定JVM时区 (在Windows Server 2008 下时间少了8个小时): 在Tomcat上运行j2ee ...

  6. web项目 在visual studio 输出窗口显示调试信息

    //始终显示 Trace.WriteLine(“要显示的调试信息”); //调试时显示 Debug.WriteLine(“要显示的调试信息”);

  7. 如何给TableView、CollectionView添加动效

    // // ViewController.m // tableViewAnimation // // Created by 冯敏 on 2018/3/13. // Copyright © 2018年 ...

  8. 【算法】解析IEEE 754 标准

    目录结构: contents structure [-] 浮点数的存储过程 次正规数(Denormalized Number) 零(zero) 非数值(NaN) 无穷大(infinity) 除数为0. ...

  9. [svc]linux紧急情况处理

    如何判断 Linux 服务器是否被入侵? w-last-history top-lsof-strace netstat CPU利用率很高 800%爆了 netstat find 文件 查/etc/rc ...

  10. sshpass 实现shell脚本直接加载密登录服务器

    主要命令:sshpass 这个命不是系统自带的,需要安装: # which sshpass/usr/bin/sshpass[root@666 tools]# rpm -qf /usr/bin/sshp ...