【jquery】 【jQuery技术内幕】阅读笔记 一
jQuery( object )
jquery在构造对象时,除了可以用十分好用的css选择器来查找DOM,还可以传入一个javascript对象来生成一个jquery对象。
// JS
var foo = {name:"foo",hello:"word"};
var $foo = $(foo);
$foo.on("custom",function(){
console.log(this.name +" "+ this.hello);
}); $(function(){
$("#btn").bind('click',function(){
$foo.trigger("custom");
});
}); // html
<button id="btn">触发</button>
为什么要在构造函数jQuery() 内部用运算符new创建并返回另一个构造函数的实例
对于jquery的构造函数,其实可以换个方法进行理解,因此我根据jquery的代码构造,写了下面这段代码:
(function(window,undefined){
var factory = (function(obj){
var NewObj = function(obj){
return new NewObj.fn.init(obj);
}
NewObj.fn = NewObj.prototype={
constructor:NewObj,
init:function(obj){
this.context = {
name:obj
};
return this;
},
print:function(){
console.log(this.context.name);
}
}
NewObj.fn.init.prototype = NewObj.fn;
return NewObj ;
})();
window.factory = window.FC = factory;
})(window);
FC("hello word").print();
在源码中,上面这段代码中的factory和NewObj其实都是写作Jquery,这样比较容易导致概念混乱。因此我换了一个名称,好予以区分。
我们可以清晰地看到,jquery的整体架构其实可以相当于一个工厂模式。factory根据外部传入的对象obj,在内部new创建生成一个NewObj对象。
这样在创建NewObj对象时,可以省略new运算符。从而更方便的创建和调用NewObj对象。
getElementById浏览器兼容问题
IE7以下及某些Opera版本的时候,用getElementById获取元素时,会按name进行查找。好坑爹啊,这也可以??!!
调用createDocumentFragment进行文档插入可以非常明显地提升性能,(待确认!)
【jquery】 【jQuery技术内幕】阅读笔记 一的更多相关文章
- Spring技术内幕阅读笔记(一)
1.BeanFactory:实现ioc容器的最基本形式.String FACTORY_BEAN_PREFIX = "&";Object getBean(String var ...
- 【转】COM技术内幕(笔记)
COM技术内幕(笔记) COM--到底是什么?--COM标准的要点介绍,它被设计用来解决什么问题?基本元素的定义--COM术语以及这些术语的含义.使用和处理COM对象--如何创建.使用和销毁COM对象 ...
- Struts2技术内幕 读书笔记一 框架的本质
本读书笔记系列,主要针对陆舟所著<<Struts2技术内幕 深入解析Strtus2架构设计与实现原理>>一书.笔记中所用的图片若无特殊说明,就都取自书中,特此声明. 什么是框架 ...
- 深入理解linux网络技术内幕读书笔记(三)--用户空间与内核的接口
Table of Contents 1 概论 1.1 procfs (/proc 文件系统) 1.1.1 编程接口 1.2 sysctl (/proc/sys目录) 1.2.1 编程接口 1.3 sy ...
- Struts2技术内幕 读书笔记三 表示层的困惑
表示层能有什么疑惑?很简单,我们暂时忘记所有的框架,就写一个注册的servlet来看看. index.jsp <form id="form1" name="form ...
- webkit技术内幕读书笔记 (一)
本文部分摘录自互联网. Chromeium与Chrome Chromium是Google为发展自家的浏览器Google Chrome而打开的项目,所以Chromium相当于Google Chrome的 ...
- 深入理解linux网络技术内幕读书笔记(一)--简介
Table of Contents 1 基本术语 1.1 本书常用的缩写 2 引用计数 2.1 引用计数函数 3 垃圾回收 3.1 异步 3.2 同步 4 函数指针 4.1 缺点 5 goto语句 5 ...
- Struts2技术内幕 读书笔记二 web开发的基本模式
最佳实践 在讨论基本模式之前,我们先说说一个词:最佳实践 任何程序的编写都得遵循一个特定的规范.这种规范有约定俗称的例如:包名全小写,类名每个单词第一个字母大写等等等等;另外还有一些需要我们严格遵守的 ...
- Kafka技术内幕 读书笔记之(一) Kafka入门
在0.10版本之前, Kafka仅仅作为一个消息系统,主要用来解决应用解耦. 异步消息 . 流量削峰等问题. 在0.10版本之后, Kafka提供了连接器与流处理的能力,它也从分布式的消息系统逐渐成为 ...
- MySQL技术内幕读书笔记(八)——事务
事务的实现 事务隔离性由锁来实现.原子性.一致性.持久性通过数据库的redo log和undo log来完成.redo log称为重做日志,用来保证事务的原子性和持久性.undo log用来保证事 ...
随机推荐
- Apache 配置参考
1.什么是Apache ? Apache,是一种开放源码的HTTP服务器,可以在大多数操作系统中运行,由于其多平台和安全性所以被广泛使用,是目前最流行的Web服务器软件之一.Apache 起初由 Il ...
- 11.6---矩阵查找元素(CC150)
思路,一旦提到查找就要想到二分查找. public static int[] findElement(int[][] a, int n, int m, int key) { // write code ...
- mybatis动态SQL - like
用'%${name}%'可以实现模糊查询,但会放开SQL注入漏洞. <when test="name != null and name!=''"> AND name l ...
- 转帖: 使用脚本删除程序(免除在[控制面板]->[添加或删除程序]中的手工操作)
1. 代码:VBS strComputer = "." '这个表示本地计算机 Set objWMIService = GetObject("winmgmts:" ...
- JAVA上百实例源码以及开源项目
简介 笔者当初为了学习JAVA,收集了很多经典源码,源码难易程度分为初级.中级.高级等,详情看源码列表,需要的可以直接下载! 这些源码反映了那时那景笔者对未来的盲目,对代码的热情.执着,对IT的憧憬. ...
- STL 阅读(浅析)
写的不错,决定那这个看下.看的还是晕. http://luohongcheng.github.io/archives/
- sharepoint2010匿名访问
怎样在SharePoint 2010网站中启用匿名访问 SharePoint 2010的改动比较大,尤其是相对SharePoint Portal Server 2003来说.本文介绍在SharePoi ...
- django 添加comments app
django 添加comments app 参看 django comments 文档 安装和配置comments 1.安装comments,运行:pip install django-contrib ...
- codecademy-command line_filesystem
$:shell prompt (命令提示符) In the terminal, first you see $. This is called a shell prompt. It appears w ...
- iOS NSObject 的 isa 属性的类型 Class
以前对NSObject的isa属性也知道点,但是了解不深,今天看了这篇博文,感觉很好,总结一下: http://chun.tips/blog/2014/11/05/bao-gen-wen-di-obj ...