jQuery源码笔记——准备】的更多相关文章

jQuery 是一个非常优秀的 JS 库,与 Prototype,YUI,Mootools 等众多的 Js 类库相比,它剑走偏锋,从 web 开发的实用角度出发,抛除了其它 Lib 中一些中看但不实用的东西,为开发者提供了优美短小而精悍的类库.其使用简单,文档丰富,而且性能高效,能极大地提高 web 系统的开发效率.因此可以说是 web 应用开发中最佳的 Js 辅助类库之一.大部分开发者正在抛弃 Prototype,而选择Jquery 做为他们进行 web 开发的 JS 库. 如是开发人员仅仅只…
笔记(二)也分为三部分: 一. 介绍: 注释说明:v2.0.3版本.Sizzle选择器.MIT软件许可注释中的#的信息索引.查询地址(英文版)匿名函数自执行:window参数及undefined参数意义 'use strict' 严格模式:代码规范及其不推荐严格模式理由rootjQuery根节点:document 获取及其声明意义readyList DOM加载相关……typeof undefined 字符串形式'undefined'的存放及其意义. 先看开头的注释: /*! * jQuery J…
回调对象是一个多用途的回调列表对象,提供了强大的的方式来管理回调函数列表. 最简单的缓存对象 function Callbacks(){ var list = [], self = { add: function(fn){ list.push(fn); }, remove: function(fn){ var index; if((index = list.indexOf(fn)) > -1){ list.splice( index, 1 ); } }, fire: function(value…
提供一种方法来执行一个或多个对象的回调函数, Deferred对象通常表示异步事件. 它是回调对象的拓展运用,在jQuery当中非常依赖回调对象. 一个简单的,只解决成功状态下的缓存实例 function myDeferred(){ var arr = []; return { done: function(a){ arr.push(a); }, solve : function(){ arr.shift()(); } } } var a = myDeferred(); a.done(funct…
数据缓存是为了解决内存泄露,他的原理是,当我们将数据存储到一个对象上面,实际上是将所有的数据存到一个单独的数据对象里,而这个对象只提供一个接口,这个接口可以访问自己存在数据对象里自己的数据. 这是一个简单的数据缓存 var cache= {}; function set(obj,name,value){ //在对象上存储一个属性,用作访问数据的接口 obj.expando = 1; //初始化对象,并在我们接口所提供的位置存放数据 cache[obj.expando] = {} cache[ob…
each()实现 var jQuery = function( selector, context ) { return new jQuery.fn.init( selector, context ); }; jQuery.fn = jQuery.prototype = { selector: "", init: function(selector){ //仍然是mini的选择器. var result = document.querySelectorAll(selector); fo…
将类数组对象转化为数组对象 javascript中有许多类数组对象,比如HTMLCollection,NodeList,arguments.她们的特点是和数组一样有length属性,并且有0,1,2这样的位置属性.在代码编写中我们经常需要将他们转化为数组对象. //mini类数组对象 var arrayLike = { 0: "a", 1: "b", 2: "c", length: 3 } console.log(Array.prototype.…
jQuery选择这样返回对象 var jQuery = function( selector, context ) { return new jQuery.fn.init( selector, context );//从jQuery.fn里调用的方法 }; jQuery.fn = jQuery.prototype = { //这里jQuery.prototype,目前在这段代码中没用 . init: function(){ console.log("初始化完成"); return th…
将变量局部化 作为一个库首要解决的问题就是防止影响全局的变量.自执行匿名函数可以很好的实现这一点. 传入window,undefiend是将全局变量改为局部变量,根据作用域链访问原理,访问更快一些,.undefined不传值实际就是传入undefined: (function(window, undefined) { var jQuery = function() {} // ... window.jQuery = window.$ = jQuery; })(window); 无new实例化 f…
近来一直利用业余时间在看jquery2.1.1源码,大约看了两千行了.平时看的时候,做了一些笔记,贴出来分享. 1. Array.prototype.slice.call 可以将伪数组转化为真正的数组 其实,这里所谓的“伪数组”就是有length属性,并且有“0”.“1”.“2”等这些属性的对象,如下代码: var obj = { 0: "A", 1: "B", 2: "C", length: 3 }; var slice = [].slice;…