Advertisement
Guest User

Untitled

a guest
Jan 19th, 2017
127
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.27 KB | None | 0 0
  1. (function(window, undefined) {
  2. var
  3. // ...
  4. jQuery = function(selector, context) {
  5. // The jQuery object is actually just the init constructor 'enhanced'
  6. // 看这里,实例化方法 jQuery() 实际上是调用了其拓展的原型方法 jQuery.fn.init
  7. return new jQuery.fn.init(selector, context, rootjQuery);
  8. },
  9.  
  10. // jQuery.prototype 即是 jQuery 的原型,挂载在上面的方法,即可让所有生成的 jQuery 对象使用
  11. jQuery.fn = jQuery.prototype = {
  12. // 实例化化方法,这个方法可以称作 jQuery 对象构造器
  13. init: function(selector, context, rootjQuery) {
  14. // ...
  15. }
  16. }
  17. // 这一句很关键,也很绕
  18. // jQuery 没有使用 new 运算符将 jQuery 实例化,而是直接调用其函数
  19. // 要实现这样,那么 jQuery 就要看成一个类,且返回一个正确的实例
  20. // 且实例还要能正确访问 jQuery 类原型上的属性与方法
  21. // jQuery 的方式是通过原型传递解决问题,把 jQuery 的原型传递给jQuery.prototype.init.prototype
  22. // 所以通过这个方法生成的实例 this 所指向的仍然是 jQuery.fn,所以能正确访问 jQuery 类原型上的属性与方法
  23. jQuery.fn.init.prototype = jQuery.fn;
  24.  
  25. })(window);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement