-
重点理解这门课的运用 设计该模式背后的主要动力是促进形成松散耦合。在这种模式中,并不是一个对象调用另一个对象的方法,而是一个对象订阅另一个对象的特定活动并在状态改变后获得通知。订阅者也称为观察者,而被观察的对象称为发布者或主题。当发生了一个重要的事件时,发布者将会通知(调用)所有订阅者并且可能经常以事件对象的形式传递消息。查看全部
-
unique与memory使用查看全部
-
观察者与订阅者的应用。用于程序之间的解耦查看全部
-
eq() 方法取出来的是 jQuery对象,而get()取出来的是DOM对象。 num < 0 ? this[num + this.length] : this[num] 从末尾开始取值查看全部
-
jQuery引入一个简单的内部寻址的机制,可以回溯到之前的Dom元素集合,通过end()方法可以实现: aaron.find('li').click(function() { alert(1); }).end().click(function() { alert(2); })查看全部
-
在$()时,并没使用jQuery构造,而仅调用了jQuery函数,在jQuery函数内部通过new构造了init函数的实例(js中每一个函数都有一个原型prototype),那返回的新对象都是init构造的实例,它们都可访问init.prototype,而jQuery所有的方法都写在jQuery的jQuery.prototype上,要使实例能访问到jQuery上的方法,用继承或复制的方式将jQuery.prototype对象上的方法挂载到init.prototype上即可(因init.prototype一个方法也没写,所以可直接jQuery.prototype赋给init.prototype)查看全部
-
回溯处理的设计: aaron.find('li').click(function() { alert(1); }).end().click(function() { alert(2); }) jQuery为我们操作这个内部对象栈提供个非常有用的2个方法 .end() .addBack() 这里需要指出来可能有些API上是andSelf,因为就Query的api是这样写的,andSelf现在是.addBack()的一个别名。在jQuery1.8和更高版本中应使用.addBack()查看全部
-
fn与jQuery其实是2个不同的对象,在之前有讲解:jQuery.extend 调用的时候,this是指向jQuery对象的(jQuery是函数,也是对象!),所以这里扩展在jQuery上。而jQuery.fn.extend 调用的时候,this指向fn对象,jQuery.fn 和jQuery.prototype指向同一对象,扩展fn就是扩展jQuery.prototype原型对象。这里增加的是原型方法,也就是对象方法了。所以jQuery的API中提供了以上2个扩展函数。查看全部
-
DSL是指Domain Specific Language,也就是用于描述和解决特定领域问题的语言。 jQuery的Internal DSL形式带来的好处——编写代码时,让代码更贴近作者的思维模式;阅读代码时,让读者更容易理解代码的含义;应用DSL可以有效的提高系统的可维护性(缩小了实现模型和领域模型的距离,提高了实现的可读性)和灵活性,并且提供开发的效率。 jQuery的这种管道风格的DSL链式代码,总的来说: 节约JS代码; 所返回的都是同一个对象,可以提高代码的效率。 通过简单扩展原型方法并通过return this的形式来实现跨浏览器的链式调用。利用JS下的简单工厂方法模式,来将所有对于同一个DOM对象的操作指定同一个实例。查看全部
-
首先,要解决无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. <script type="text/javascript"> //常见写法 var $$ = ajQuery = function(selector) { this.selector = selector; return this } ajQuery.fn = ajQuery.prototype = { selectorName:function(){ return this.selector; }, constructor: ajQuery } var a = new $$('aaa'); //实例化 //得到选择器名字 //aaa $("#test").html( a.selectorName() ) </script> 通过new操作符构建一个对象,一般经过四步: A.创建一个新对象 B.将构造函数的作用域赋给新对象(所以this就指向了这个新对象) C.执行构造函数中的代码 D.返回这个新对象 最后一点就说明了,我们只要返回一个新对象即可查看全部
-
JavaScript,JScript,ActionScript等脚本语言都是基于ECMAScript标准实现的,由于ECMAScript中是没有类的概念,因此JS不能像C++或Java等面向对象语言以"class"关键字声明和定义类,但JS巧妙地以匿名函数的方式声明"类",如: function ajQuery() { this.name = 'jQuery'; this.sayName = function(){ return this.name } var a = new ajQuery() prototype是构造函数的一个属性, 该属性指向一个对象。而这个对象将作为该构造函数所创建的所有实例的基引用(base reference), 可以把对象的基引用想像成一个自动创建的隐藏属性。 当访问对象的一个属性时, 首先查找对象本身, 找到则返回;若不, 则查找基引用指向的对象的属性(如果还找不到实际上还会沿着原型链向上查找, 直至到根)。 只要没有被覆盖的话, 对象原型的属性就能在所有的实例中找到。查看全部
-
首先在<head></head>中加入脚本,比如说是prototype.js和jquery.js 1.在导入jquery.js的时候,将prototype.js中的$进行保存,var _$ = window.$; 2.jquery完全导入之后,此时的window.$已经被替换为jquery中的$ 3.当执行noConflict函数,此时的window.$ === jQuery 成立,进而window.$被替换成之前保存的_$,即为prototype中的$ 4.此时即完成了jQuery让出$控制权的功能查看全部
-
DOM文档加载的步骤: 要想理解为什么ready先执行,load后执行就要先了解下DOM文档加载的步骤: (1) 解析HTML结构。 (2) 加载外部脚本和样式表文件。 (3) 解析并执行脚本代码。 (4) 构造HTML DOM模型。//ready (5) 加载图片等外部文件。 (6) 页面加载完毕。//load 从上面的描述中大家应该已经理解了吧,ready在第(4)步完成之后就执行了,但是load要在第(6)步完成之后才执行。查看全部
-
jQuery通过传递参数的不同,实现了9种方法的重载: 1. jQuery([selector,[context]]) 2. jQuery(element) 3. jQuery(elementArray) 4. jQuery(object) 5. jQuery(jQuery object) 6. jQuery(html,[ownerDocument]) 7. jQuery(html,[attributes]) 8. jQuery() 9. jQuery(callback)查看全部
-
jQuery使用()将匿名函数括起来,然后后面再加一对小括号(包含参数列表),那么这小括号能把我们的表达式组合分块,并且每一块(也就是每一对小括号),都有一个返回值。这个返回值实际上也就是小括号中表达式的返回值。所以,当我们用一对小括号把匿名函数括起来的时候,实际上小括号返回的,就是一个匿名函数的Function对象。因此,小括号对加上匿名函数就如同有名字的函数般被我们取得它的引用位置了。所以如果在这个引用变量后面再加上参数列表,就会实现普通函数的调用形式。 匿名函数可以有效的保证在页面上写入JavaScript,而不会造成全局变量的污染,通过小括号,让其加载的时候立即初始化,这样就形成了一个单例模式的效果从而只会执行一次。查看全部
举报
0/150
提交
取消