0 Comments

生长--跨域访问

发布于:2013-05-30  |   作者:广州网站建设  |   已聚集:人围观
生长--跨域访问

如何做到既能够分隔初始化构造器函数与jQuery原型对象的作用域,又能够在返回实例中访问jQuery原型对象呢?

jQuery框架巧妙地通过原型传递解决了这个问题,它把jQuery.fn传递给jQuery.fn.init.prototype,也就是说用jQuery的原型对象覆盖init构造器的原型对象,从而实现跨域访问,其代码如下所示。

广州网站建设,网站建设,广州网页设计,广州网站设计
  1. <script language="javascript" type="text/javascript"> 
  2. var $ =jQuery = function(){  
  3.     return new jQuery.fn.init();  
  4. }  
  5. jQueryjQuery.fn = jQuery.prototype = {  
  6.     init : function(){  
  7.         this.length = 0;  
  8.         this.test = function(){  
  9.             return this.length;  
  10.         }  
  11.         return this;  
  12.     },  
  13.     jquery: "1.3.2",  
  14.     length: 1,  
  15.     size: function() {  
  16.         return this.length;  
  17.     }  
  18. }  
  19. jQueryjQuery.fn.init.prototype = jQuery.fn;     //使用jQuery的原型对象覆盖init的原型对象  
  20. alert( $().jquery );     //返回"1.3.2"  
  21. alert( $().test() );     //返回0  
  22. alert( $().size() );     //返回0  
  23. </script> 

这是一招妙棋,new jQuery.fn.init()创建的新对象拥有init构造器的prototype原型对象的方法,通过改变prototype指针的指向,使其指向jQuery类的prototype,这样创建出来的对象就继承了jQuery.fn原型对象定义的方法。

广州网站建设,网站建设,广州网页设计,广州网站设计

标签:
飞机