【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进行文档插入可以非常明显地提升性能,(待确认!

时间: 2024-10-12 05:38:17

【jquery】 【jQuery技术内幕】阅读笔记 一的相关文章

Spring技术内幕阅读笔记(一)

1.BeanFactory:实现ioc容器的最基本形式.String FACTORY_BEAN_PREFIX = "&";Object getBean(String var1) throws BeansException;指定名字的bean <T> T getBean(String var1, Class<T> var2) throws BeansException; <T> T getBean(Class<T> var1) th

【转】COM技术内幕(笔记)

COM技术内幕(笔记) COM--到底是什么?--COM标准的要点介绍,它被设计用来解决什么问题?基本元素的定义--COM术语以及这些术语的含义.使用和处理COM对象--如何创建.使用和销毁COM对象.基本接口--描述IUnknown基本接口及其方法. 掌握串的处理--在COM代码中如何处理串.应用COM技术--例子代码,举例说明本文所讨论的所有概念. 处理HRESULT--HRESULT类型描述,如何监测错误及成功代码.COM--到底是什么? 简单地说,COM是一种跨应用和语言共享二进制代码的

COM技术内幕(笔记)

COM--到底是什么?--COM标准的要点介绍,它被设计用来解决什么问题?基本元素的定义--COM术语以及这些术语的含义.使用和处理COM对象--如何创建.使用和销毁COM对象.基本接口--描述IUnknown基本接口及其方法. 掌握串的处理--在COM代码中如何处理串.应用COM技术--例子代码,举例说明本文所讨论的所有概念. 处理HRESULT--HRESULT类型描述,如何监测错误及成功代码. COM--到底是什么? 简单地说,COM是一种跨应用和语言共享二进制代码的方法.与C++不同,它

Struts2技术内幕 读书笔记一 框架的本质

本读书笔记系列,主要针对陆舟所著<<Struts2技术内幕 深入解析Strtus2架构设计与实现原理>>一书.笔记中所用的图片若无特殊说明,就都取自书中,特此声明. 什么是框架?我们为什么要用框架?框架能给我们带来什么? 这几个问题既简单又复杂.说它简单,是因为框架确实存在在软件设计中,说它复杂是因为我们现在所使用的框架不论是spring还是struts都是经过多年的发展,其内部已经十分庞杂了,因此想一句话两句话说清楚一个框架就不是那么简单了. OK,既然现有的框架都很复杂,那我们

Struts2技术内幕 读书笔记三 表示层的困惑

表示层能有什么疑惑?很简单,我们暂时忘记所有的框架,就写一个注册的servlet来看看. index.jsp <form id="form1" name="form1" method="post" action="loginServlet"> <table width="357" border="0" align="center"> <t

大型网站技术架构阅读笔记2

第二次主要阅读了第二篇的架构,阅读了瞬时响应,网站的高性能,万无一失,网站的高可用架构,永无止境,网站的伸缩性架构. 网站性能是客观的指标,可以具体体现到响应时间,吞吐量等技术指标,同时也是主观的感受,而感受则是一种与具体参与者相关的微妙的东西,用户的感受和工程师的感受不同,不同的用户感受也不同.网站性能测试是性能优化的前提和基础,也是性能优化结果的检查和度量标准.不同视角下的网站性能有不同的标准,也有不同的优化手段.对于一些软件工程师来说,说到网站性能的时候,通常和用户说的不一样.开发人员关注

大型网站技术架构阅读笔记4

这次阅读了第三篇维基百科的高性能架构设计分析和海量分布式储存系统Doris的高可用架构设计分析.对于这两节主要讲了许多内容. 作为一个百科服务类网站,维基百科主要面临的挑战是如何应对来自全球各地的巨量并发的词条查询请求.相对其他网站,它的业务比较简单,用户操作大部分是只读的,这些前提使它的性能优化约束变得简单,可以让技术团队将每一种性能优化手段都发挥到极致,且业务束缚较少,因此它的性能优化比较有典型意义.所谓网站前端是指应用服务器之前的部分,包括DNS服务,cdn服务,反向代理服务,静态资源服务

大型网站技术架构阅读笔记5

这一次主要阅读了本书的对大型网站典型故障案例的分析以及在架构师中架构师的领导艺术. 一般的故障现象,由于某应用发布后,数据库Load居高不下,远超于正常水平,持续报警.主要的原因分析是,检查数据库,发现报警是因为某条sql引起的,这条是一条简单的有索引的数据查询,不应该引发报警.继续检查,发现这条sql执行频率非常高,远远超过正常水平,追查这条sql,发现被网站应用调用,首页是被访问最频繁的网页,这条sql被首页调用,也就被频繁执行了.经验教训,首页不应该访问数据库,首页需要的数据可以从缓存服务

深入分析java web技术内幕 学习笔记

在Java虚拟机规范中将Java运行时数据划分为6种,(其中的域即类的成员)分别为: ◎  PC寄存器数据: 它用于保存当前正常执行的程序的内存地址, JVM规范只定义了Java方法需要记录指针信息,而对于Native方法,并没有要求记录执行的指针地址.pc寄存器所指向的也是当前活动栈(栈顶, 即当前执行的方法)地址 ◎  Java栈: 与线程密切相关, 线程中的每个调用的方法都会在栈中有一个对应的栈针,栈中主要存放一些基本类型的变量数据(int.short.long.byte.float.do

Struts2技术内幕 读书笔记二 web开发的基本模式

最佳实践 在讨论基本模式之前,我们先说说一个词:最佳实践 任何程序的编写都得遵循一个特定的规范.这种规范有约定俗称的例如:包名全小写,类名每个单词第一个字母大写等等等等;另外还有一些需要我们严格遵守的:例如我们写自己的servlet的时候就得继承javax.servlet.http.HttpServlet接口. 在标准之上的是对不同标准的具体实现.例如同是servlet标准,tomcat有一套实现方式,Websphere又有不同的实现方式. 在程序员级别来说,面对复杂的业务流程,不同的程序员会有