-
jQuery一共13个模块,从2.1版开始jQuery支持通过AMD模块划分,jQuery在最开始发布的1.0版本是很简单的,只有CSS选择符、事件处理和AJAX交互3大块。其发展过程中,有几次重要的变革: 1.2.3 版发布,引入数据缓存,解决循环引用与大数据保存的问题 1.3 版发布,它使用了全新的选择符引擎Sizzle,在各个浏览器下全面超越其他同类型JavaScript框架的查询速度,程序库的性能也因此有了极大提升 1.5 版发布,新增延缓对像(Deferred Objects),并用deferred重写了Ajax模块 1.7 版发布,抽象出回调对象,提供了强大的的方式来管理回调函数列表。 每一次大的改进都引入了一些新的机制、新的特性,通过这些新的机制就造就了如今jQuery库,一共13个模块,模块不是单一的,比如jQuery动画,都会依赖异步队列、动画队列、回调队列与数据缓存模块等。查看全部
-
js很难学,就是因为这些查看全部
-
三目运算符 $( "#t" ).text( n + (n === 1 ? " is" : " are") + " checked!" ); eg: a>b?c:d; 判断a是否大于b,是则返回c,否则返回d查看全部
-
1.jquery实现了9种方法的重载,9种用法整体来说可以分三大块:选择器、dom的处理、dom加载。 2.jQuery就是为了获取DOM、操作DOM而存在的!所以为了更方便这些操作,让节点与实例对象通过一个桥梁给关联起来,jQuery内部就采用了一种叫“类数组对象”的方式作为存储结构,所以我们即可以像对象一样处理jQuery操作,也能像数组一样可以使用push、pop、shift、unshift、sort、each、map等类数组的方法操作jQuery对象了。查看全部
-
最新jQuery 2.1.1 版本的结构查看全部
-
var $ = function(a){ return new $.prototype.init(a); }//实例$函数的时候,返回的是init的实例对象,在后面可以看到,init的实例对象是通过init.prototype生成的,而我们把init.prototype = $.prototype了,所以返回的对象就是以$.prototype生成的! $.sayHello = function(args){ if(args) console.log("Hello,"+"I am "+args); else console.log("Hello"); }//静态方法很容易实现 $.prototype = { init:function(a){ this.a = a; //实例初始化a }, constructor:$, sayHello:function(){ return $.sayHello(this.a); //用实例的a作为参数调用静态方法 }, a:null }//这儿就是对象的原型了,尽管返回的是init的实例对象,也是通过这个原型产生的 $.prototype.init.prototype = $.prototype; $.sayHello();//Hello $('Jose').sayHello();//Hello,I am Jose查看全部
-
这里有一个设计的重点,通过调用的上下文,我们来确定这个方法是作为静态还是实例处理,在javascript的世界中一共有四种上下文调用方式:方法调用模式、函数调用模式、构造器调用模式、apply调用模式: jQuery.extend调用的时候上下文指向的是jQuery构造器 jQuery.fn.extend调用的时候上下文指向的是jQuery构造器的实例对象了查看全部
-
首先,要解决无new,拿么只能在函数里边new,但是new自己容易出现无限递归自己。那么就要想办法,不能new 自己,那能不能new别人,然后让这个人拥有和自己一样的属性和方法,只是换了个名字而已,当然是可以的。如是就有了new ajQuery.fn.init( selector ). 在init()方法里返回this,然后将init.prototype=ajQuery.prototype,这样,init()返回的this 就拥有了ajQuery所有的属性和方法。绕了一个圈,目的就为了不new自己也能得到和自己拥有相同属性和方法的实例对象。查看全部
-
理解:1.$(),jQuery()是执行一个函数,$和jQuery是函数名称,这个函数返回的是一个对象,所以里面是一个new表达式,但是名字不能是自己,否则无限循环。2.既然不是自己,其实可以理解为jQuery()返回的不是jQuery对象,而是jQuery.fn.init(一个名字而已)对象。3.但是为了统一和方法/属性的共用(理解原型链),jQUuery这样处理,jQuery.fn.init.prototype = jQuery.prototype. 后面还有4.............不能超过3000字查看全部
-
打印$$().say() <div id="aaron"></div> <script type="text/javascript"> var $$ = ajQuery = (function(selector) { return new ajQuery.fn.init(selector); }) // 这里可以这样子理解$$ 是一个类(方法类。) ajQuery.fn = ajQuery.prototype = { name: 'aaron', // 这是ajQuery($$)的静态方法init init: function(selector) { this.selector = selector; return this; }, constructor: ajQuery } // $$类的实例方法fn指向类$$的原型 // 同时给原型上定入了init方法, // ajQuery.fn.init.prototype = ajQuery.fn // 由于我们执行$$()返回的是一个ajQuery.fn.init的对象(假定为a) // 所以为了能够a用能用$$的原型上的方法。 // 我们就把ajQuery.fn.init类的原型()指向ajQuery.prototype // 这样我们返回的a的类上的原型跟ajquery的原型是同一个了。 // 由于上面的赋值是不可逆的,所以这个say方法只存在ajQuery.fn // 上,而不存在ajQuery的原型上。所以你不能直接使用$$.say() ajQuery.fn.say = function() { $("#aaron").html(this.name) } $$.say() $$().say()查看全部
-
面试的过程中,经常会被问到一个问题:ready与load那一个先执行,那一个后执行? 答案:ready先执行,load后执行。查看全部
-
jQuery实现了“类数组对象”和“静态与实例的共存”查看全部
-
var n = $( "input:checked" ).length; input元素中所有checked=checked的对象,加上lengh就是对象个个数查看全部
-
n===1? "is":"are" 当n===1时,用is 否则用are查看全部
-
DOM文档加载的步骤: 要想理解为什么ready先执行,load后执行就要先了解下DOM文档加载的步骤: (1) 解析HTML结构。 (2) 加载外部脚本和样式表文件。 (3) 解析并执行脚本代码。 (4) 构造HTML DOM模型。//ready (5) 加载图片等外部文件。 (6) 页面加载完毕。//load 从上面的描述中大家应该已经理解了吧,ready在第(4)步完成之后就执行了,但是load要在第(6)步完成之后才执行。查看全部
举报
0/150
提交
取消