jQuery Note 0523

1.JQuery.extend(dest, src1, src2, src3);

  解析:将 src1, src2...合并到 dest 中,同时修改了 dest 结构,为避免结构的修改,可以使用:

  var newSrc = $.extend({}, src1, src2, src3...)

  e.g: var result = $.extend({}, {name:"Tom", age:21}, {name:"Jerry", sex:"Boy"}); 

  结果:result = {name:"Jerry", age:21, sex:"Boy"};  //浅拷贝,若需要深度拷贝,则 $.extend(boolean, {}, src1...) 中 boolean 为 true。

  资料:http://www.jb51.net/article/71924.htm

2.JQuery 对象

  解析:jQuery 对象就是  jQuery.fn.init 的实例,可对 DOM 节点进行链式操作,精简代码如下:

  var jQuery = function( selector, context) {

    return new jQuery.fn.init( selector, context, rootjQuery );

  }

  e.g: var $obj = return new jQuery.fn.init( "div", context, rootjQuery );  // $("div")

  闪点:jQuery 这个构造函数,为什么不直接返回 jQuery 对象,而是调用另外的方法?

  解析:简化实例化操作,统一接口,提高效率。

3.JQuery 插件机制

  解析:结合 2,init.prototype 指向 jQuery.fn ,即当 fn 添加属性时, new init() 得到的实例也随之新增属性。

  源码:jQuery.fn = jQuery.prototype;  jQuery.fn.init.prototype = jQuery.fn;

  e.g: $.fn.method = function(){};  $(selector).method(); 

    $.fn.extend(method) = $.fn.method;

4.JQuery 静态方法入口

  解析:类的方法,不用构造对象,直接使用,需要与原型私有方法区别开。

  jQuery.extend({md: function(){}, ...});  $.md();

  e.g: var Fn = function(){};  Fn.extend = function() {};  console.log(Fn.extend());  //直接输出静态方法

5.

猜你喜欢

转载自www.cnblogs.com/yuqlblog/p/9100541.html