1:开发JQuery插件的方法:
定义jQuery.fn.插件名 = function(){};
原理:
我们给jQuery.fn.插件名的同时,其实就是等价jQuery.prototype.插件名。 这个‘=’等号,是一种地址赋值,它指向后面的js对象。并不是值拷贝所以要注意一种面向对象的思想,堆栈原理。第一次我看到这种方法很不明白,因为我没有体会到引用,这一说法,jQuery.fn 和 jQuery.prototype 相当于引用指向堆中的对象。
jQuery的api提供了开发插件的两种方法:
jQuery.fn.extend(object); 给jQuery的prototype添加方法,即每个jQuery对象都可以使用这个方法,也就是给jQuery对象添加方法,我们上面的那种方法,其实就是属于这个。
jQuery.extend(object); 给jQuery本身添加方法,为扩展jQuery类本身.为类添加新的方法,可以直接使用$.方法使用。
2:js的继承
- function Animal(){}
- function Dog(){}
- Dog.prototype = Animal.prototype; /*new Animal()也可以*/
- var dog = new Dog();
- alert(dog instanceof Dog); --->ture
- alert(dog instanceof Animal) --->ture
----> alert(dog instanceof Animal) 会发现为ture。 包括Dog的prototype的constructor也变成了Animal(){} 并且包括Dog实例 alert(dog.constructor); 也变成了function Animal(){}
3:尽量多使用callback
由于 JavaScript 语句(指令)是逐一执行的 - 按照次序 ,执行完动画 事件 之后,位于其后的语句可能会产生错误或页面冲突,因为动画事件等完成后会对其后的语句发生音响。为了避免这个情况,应该尽量使用添加 Callback 函数。
$(selector).hide(speed,callback)
callback 参数是一个在 hide 操作完成后被执行的函数。callback参数是前面的动作100%完成后,才执行。
4:JQuery中利用$(function)代替$("document").ready(function);的原理
他会去判断$()里面写的是什么,如果是function则就把他作为页面加载完后的处理措施,具体可以看 ready(seletor);