如何做到既能够分隔初始化构造器函数与jQuery原型对象的作用域,又能够在返回实例中访问jQuery原型对象呢?
jQuery框架巧妙地通过原型传递解决了这个问题,它把jQuery.fn传递给jQuery.fn.init.prototype,也就是说用jQuery的原型对象覆盖init构造器的原型对象,从而实现跨域访问,其代码如下所示。
广州网站建设,网站建设,广州网页设计,广州网站设计
- <script language="javascript" type="text/javascript">
- var $ =jQuery = function(){
- return new jQuery.fn.init();
- }
- jQueryjQuery.fn = jQuery.prototype = {
- init : function(){
- this.length = 0;
- this.test = function(){
- return this.length;
- }
- return this;
- },
- jquery: "1.3.2",
- length: 1,
- size: function() {
- return this.length;
- }
- }
- jQueryjQuery.fn.init.prototype = jQuery.fn; //使用jQuery的原型对象覆盖init的原型对象
- alert( $().jquery ); //返回"1.3.2"
- alert( $().test() ); //返回0
- alert( $().size() ); //返回0
- </script>
这是一招妙棋,new jQuery.fn.init()创建的新对象拥有init构造器的prototype原型对象的方法,通过改变prototype指针的指向,使其指向jQuery类的prototype,这样创建出来的对象就继承了jQuery.fn原型对象定义的方法。
广州网站建设,网站建设,广州网页设计,广州网站设计



