对js的类进行面向对象扩展,我已经完成,希望高手来探讨


js不好继承,用的时候都是一些很奇怪的方法,比如call,再比如如下


function a(){

this.b = 1


}


function b() {

this.parent =a;

this.parent();

delete this.parent;

}


然后再prototype


for() {

xxxx

}


看起来好丑啊,完全没有韵味,琢磨着,对Function 加个extend方法,然后就有了下边的代码:

Function.prototype.extend = function(parent) {
	var _this = this;
	var child =  function(){
		this.parent = parent;
		this.parent.apply(this,arguments);
		this.me = _this;
		this.me.apply(this,arguments);
		delete this.parent;
		delete this.me;
	}
	for(var k in parent.prototype) {
		child.prototype[k] = parent.prototype[k]
	}
	return child;
  }

然后来做个实验

function a(c) {
      
      this.v_1 = c;
	  this.setV = function(v) {
	      this.v_1 = v;
	  }
  }
  a.prototype.show = function(){
  
      alert(this.v_1);
  }

  var b = function(){
      this.v_2 = 2;
	  this.setV2 = function(v) {
	      this.v_2 = v;
	  }
  }.extend(a);

  var c = new b(8);
  c.show();
  c.setV(2);
  c.show();
  alert(c.v_2);

  c.setV2(3);
  alert(c.v_2);

看来看去也没有什么问题,希望高手进来探讨探讨

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值