已采纳回答 / 艾伦Aaron
首先,回调函数是从异步队列分离出来的,那么就是无缝贴合Deferred的设计可以查看下Deferred模块会有这么一段代码<...code...>这里设计到规范的接口,done | fail | progress方法都是通过jQuery.Callba...
2015-01-04
已采纳回答 / 艾伦Aaron
这是跟后面的静态与实例设计有关系简单的说 jQuery底层是扩展的静态方法,然后共享给实例调用开发者通过通过选择器创建的jQuery对象,是实例对象,在原型上大部分的接口都是用来做一个过滤包装的处理,真正的处理都是通过静态方法实现的。
2014-12-24
已采纳回答 / 艾伦Aaron
我们先看看$.noConflict()方法在加载jquery的时候做了一个动作 _$ = window.$; 保存了当前的$的引用为_$, 因为此时可能上一个script脚本可能存在$的命名空间。所以在当前加载的时候就保存起来了我们调用的时候就干了一件事把当前的jquery的命名空间$ 替换成_$,达到了交换的目的,可能话没有表述清楚
2014-12-24
最赞回答 / MrzHuo
var F = function (e) { "use strict"; //这行是定义此函数使用的是js严格模式 ... //中间代码应该是对e进行扩展, 类似 e.newFunction = function () {}; return e; //返回已经拓展好的e对象}(F || {}); //函数自执行, F || {}是短路使用, 如果F存在 e == F, 如果不存在 e == {}/* 这样的主要目的就是扩展F这个对象, 如果已经存在F对象了, 就对F对象...
2014-12-14
已采纳回答 / 艾伦Aaron
//通过闭包隔离出$ ;(function($) { if ($) { show("通过闭包隔离后,转为局部变量$存在") } })(jQuery);因为外部的$被入侵了, 如果想在局部使用$,可以采用这种方式
2014-12-14
已采纳回答 / whuomingjian
个人理解:浏览器事件是异步发生的,jQuery的ready方法中(源码)是这样处理的(jquery2.1.1),1.使用setTimeout( jQuery.ready ),时间最小间隔;2.readyList = jQuery.Deferred(),事件队列(顺序);3.document.addEventListener( "DOMContentLoaded", completed, false ),completed方法调用自己,等保证ready方法是第一个DOM加载完后执行的。页面中的那个只能等前面...
2014-11-16
最赞回答 / 5am
如果不用new,返回的是aQuery.prototype,当你每次调用aQuery(selector)的时候返回的都是同一个(aQuery.prototype)对象,一旦对其进行操作就会对所有的造成影响。加new之后对每次返回的对象进行分离,即this被分离,每次都是一个新的实例对象(__proto__属性引用同一个原型对象aQuery.prototype,故拥有aQuery.prototype所有的属性),你对实例对象操作也只会影响其自身的属性,而不会影响aQuery.prototype。好比,aQue...
2014-11-03
已采纳回答 / 艾伦Aaron
var a = { selectorName:function(){}}a.selectorName()只要作为一个对象是方法存在,就能够访问到,当然还可以借助call,apply
2014-11-03