Jackiesteed

www.github.com/jackiesteed

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

1. 

jQuery = function( selector, context ) {
  return new jQuery.fn.init( selector, context, rootjQuery );
}
jQuery.fn.init.prototype = jQuery.fn;

代码为什么这么写?

首先, jQuery.fn=jQuery.prototype.

调用$("#domId") 时, 其实是调用了new jQuery.prototype.init("#domId"), 而这里有一个new.

javascript里面的new用来构造对象, $("#domId") 返回的就是一个对象.

而如果没有函数里面的这个new, 就需要在函数外面有个new(如 new jQuery("#domId"), 而这种写法略显冗余, 这正是jQuery函数内部增加init的初衷), 或者换用其他更复杂的写法.

所以就出现了这个很绕的写法.

而jQuery.fn.init.prototype = jQuery.fn; 这行代码也保证了$("#domId") 利用init函数构造的对象和 new jQuery("#domId")是等价的.

posted on 2014-02-25 20:02  Jackiesteed  阅读(127)  评论(0编辑  收藏  举报