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. commit 冲突

    git status or repo sync . 时看到如下的提示: error: packages/apps/app/: branch alpha is published (but not me ...

  2. 关于关键字 volatile

    关于 volatile 的使用,也是 C 语言面试的月经问题.标准答案来了: volatile is a qualifier that is applied to a variable when it ...

  3. [C#] .NET Core项目修改project.json来引用其他目录下的源码等文件的办法 & 解决多框架时 project.json 与 app.config冲突的问题

    作者: zyl910 一.缘由 项目规模大了后,经常会出现源码文件分布在不同目录的情况,但.NET Core项目默认只有项目目录下的源码文件,且不支持"Add As Link"方式 ...

  4. Windows两个网卡配置路由规则 同时访问内网和外网

    电脑上有两个网卡,一个有线一个无线,有线连局域网,无线连外网,虽然两个网都连着,但还是会出现访问不通的情况. 这就要求我们自己来配置路由规则,让内网的访问走内网的网卡,外网的访问走外网的网卡. 一.查 ...

  5. 【Python】解析Python的缩进规则

    Python中的缩进(Indentation)决定了代码的作用域范围.这一点和传统的c/c++有很大的不同(传统的c/c++使用花括号花括号{}符决定作用域的范围:python使用缩进空格来表示作用域 ...

  6. 关于 Docker Hub 上不能注册 Docker ID 的问题

    1. 引言 我们中国大陆访问dockerhub的时候,想要注册一个dockerID,发现sign up按钮是灰色的,不能点击进行注册.这个时候通过点击右键"查看网页源代码"和&qu ...

  7. zsh+on-my-zsh配置教程指南(程序员必备)

    本文以CentOS 7/Mac 为例,介绍zsh的配置使用教程. 准备 查看当前环境shell echo $SHELL <!-- more --> 查看系统自带哪些shell cat /e ...

  8. IOS开发中一些受用的编码和调试方法积累

    1.## 与 @# 在宏里面该怎样使用 ##的使用, 首先我们添加一个宏 #define LRWeakSelf(type) __weak typeof(type) weak##type = type; ...

  9. Openfire 单人聊天和多人聊天(发送消息、接收消息)

    Openfire 单人聊天和多人聊天(发送消息.接收消息) 一.单人聊天 1)发送消息: 首先要获取一个聊天窗口,getConnection()为获取连接connection的方法,调用getFrie ...

  10. eclipse中项目jdk1.8刷新下就变成1.5的解决办法

    https://blog.csdn.net/qq_32814555/article/details/82803017 ***************************************** ...