jquery源码学习笔记二:jQuery工厂 jquery源码学习笔记一:总体结构 上两篇说过,query的核心是一个jQuery工厂.其代码如下 function( window, noGlobal ) { var jQuery = function( selector, context ) {//首先定义一个内部jQuery.注意,此jQuery只是一个工厂内部的变量,并非我们在外面引用的那个jQuery或$ return new jQuery.fn.init( selector, cont…
jquery源码中noConflict(防止$和jQuery的命名冲突)的实现原理 最近在看jquery源码分析的视频教学,希望将视频中学到的知识用博客记录下来,更希望对有同样对jquery源码有困惑的童鞋能有一点点的帮助(我是从一个小白的角度出发,感觉挺容易理解的,顺带说下视频中jquery源码选取的是2.0.3版本). 我们都知道,使用$和jQuery效果是一样的,比如: <button id="btn">点我</button> $("#btn&q…
神奇的jQuery可以这样玩jQuery("#id").css()或 jQuery("#id").html() 这么玩jQuery("#id")这个对象是怎么创建出来的 所以打算来扒一扒 //jquery源码部分var jQuery = function(){ return new jQuery.fn.init();} //构造函数的原型给了fnjQuery.fn = jQuery.prototype = { } jQuery.fn.init =…
笔记一里记录,jQuery的总体结构如下: (function( global, factory ) { //调用factory(工厂)生成jQuery实例 factory( global ); }(typeof window !== "undefined" ? window : this, function( window, noGlobal ) { //factory实现,jquery源码主体部分 })); 那么这个生成jQuery的工厂是咋样的? 酱紫的: function( w…
jQuery 源码学习是对js的能力提升很有帮助的一个方法,废话不说,我们来开始学习啦 我们学习的源码是jquery-2.0.3已经不支持IE6,7,8了,因为可以少学很多hack和兼容的方法. jquery-2.0.3的代码结构如下 首先最外层为一个闭包, 代码执行的最后一句为window.$ = window.jquery = jquery 让闭包中的变量暴露倒全局中. 传参传入window是为了便于压缩 传入undefined是为了undifined被修改,他是window的属性,可以被修…
我们先来看一下jQuery中有多少个方法是用来操作元素属性的. 首先,看一下实例方法: 然后,看下静态方法(工具方法): 静态方法是内部使用的,我们外面使用的很少,实例方法才是对外的. 接下来,我们来看下一些方法是如何使用的? $("#div1").attr("title","hello") ,设置属性,两个参数时. $("#div1").attr("title") , 获取属性值,一个参数时. $(&qu…
//源码剖析都基于jQuery-2.0.3版本,主要考虑到兼容IE 一.关于jQuery对象实例化的逻辑: 整个jQuery程序被包裹在一个匿名自执行行数内: (function(window,undefined){ //...... })(window); 外部程序不能直接调用jQuery对象的属性和方法,jQuery所有方法和属性被变成局部私有的.例如: (function(window,undefined){ var a = "我是a"; var b = function(a){…
上次我们学习了jquery中的主要对象jQuery和一些变量,现在我们开始学习jquery的原型 98行声明了jQuery.fn = jQuery.prototype = {} 285行jQuery.fn.init.prototype = jQuery.fn;这就是jquery的核心了,而jquery的核心的核心是jquery.init,因为它开启了第一步. 他定义的是jquery的主要方法 98 - 285 行完成了这些任务. 主要定义了如下的变量 jQuery.fn = jQuery.pro…
jquery在 21-93 行提供了变量 var // A central reference to the root jQuery(document) rootjQuery, // The deferred used on DOM ready readyList, // Support: IE9 // For `typeof xmlNode.method` instead of `xmlNode.method !== undefined` core_strundefined = typeof…
a.jQuery.extend( source ) b.jQuery.extend(destination, source1, source2, source3 ....) c.jQuery.extend(boolean, destination, source1, source2, source3 ....) 以上是jquery的extend实现方法 首先是第一种:传入一个源函数,拓展自己 var Test = function(){}; Test.prototype.extend = fun…