jQuery的无new构建

正常面向对象的写法:

  var cJquery = function(){

    //构造函数体

  };

  cJquery.prototype = {

    name : function(alert("chenliang");)

    age : function(alert(27);)

  }

  var c = new cJquery();

  c.name();

 

使用jQuery时,并不会使用new来创建jQuery对象,而是类似一个工厂,不断的根据不同的需求产出不同的jQuery对象。

例如:

  var cJquery = function(){

    new cJquery();

  }

  因为new的其中一步就是执行构造函数体,所以,这种写法会造成无限循环

 

因此,jQuery采用了返回一个假jQuery对象来代替jQuery对象的方法(个人理解,不知道对不对)

  var jQuery = function(){

    return new jQuery.prototype.init();

  }

  jQuery.prototype = {

    init : function(){

      return this;

    },

    name : function(){alert("chenliang");}

  }

  但这种做法的后果是,jQuery返回的假jQuery对象(init对象),无法访问jQuery的原型对象上的方法。

  因此jQuery做了最后一步处理:

  jQuery.protype.init.protype = jQuery.protype;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值