码迷,mamicode.com
首页 > Web开发 > 详细

jQuery源码阅读计划-8月3日-1/40

时间:2016-08-03 21:38:06      阅读:179      评论:0      收藏:0      [点我收藏+]

标签:

1.jQuery无new构建

我们希望做到的事情是:我们只需要写var $ = jQuery();就可以在新建一个工具对象,同时如果我们想var $ = new jQuery()的时候也可以得到同样的效果。

做到这件事情的关键就是将所有工具方法都写在jQuery.prototype里面,并且在无new构建的时候,返回和使用new构建时一样的对象。

怎么做才能返回一样的对象呢?

返回对象首先应该想到的应该就是return new xxx();这样的形式。

那么这个xxx()应写在哪里呢?

应该写在jQuery.prototype里面,因为我们希望返回的对象是能操作所有工具和属性的,所以xxx的位置应该在jQuery.prototype里面

  • 要实现无new构建,首先jQuery对象本身必须是一个函数
  • 这个函数返回自己的prototype中的一个init构造函数生成的对象
  • 返回的这个对象应该是一个和jQuery.prototype一样的对象(但不是同一个对象)
  • 但是问题在于init构造函数中的return this中的this指向并不是我们想要的jQuery.prototype
  • 解决方法很简单,只需要将init的prototype指向jQuery.prototype,函数jQuery返回的对象就可以得到jQuery.prototype的所有属性和方法

 

2.链式调用

很简单,所有方法在操作完之后都return this就可以了。

 

3.插件接口

所谓的插件接口其实就是extend方法,这个方法并不用来专门接入插件。

这个方法仅用于扩展对象的属性和方法。

jQuery和jQuery.fn上都有这个方法(实现完全一样),其中jQuery上的这个方法常用来扩展对象,jQuery.fn上的这个方法用来接入插件的新方法。

对于extend的实现有几点需要注意:

jQuery源码阅读计划-8月3日-1/40

标签:

原文地址:http://www.cnblogs.com/magicshow/p/5734225.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!