模拟ExtJS底层继承(原理)

本文探讨ExtJS的底层继承实现,详细解释了如何同时继承父类的模板、原型对象,以及通过call和apply实现在子类实例化时传递参数,并确保仅一次继承父类的原型对象。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ExtJS底层继承实现的比较完美,既实现了继承父类的模板,又继承了父类的原型对象,又用call,apply实现了子类实例化传参,还只继承了一遍父类的原型对象。其中的原理呢,看下面代码有详细的解释。

  // 原型继承的方式:既继承了父类的模板,又继承了父类的原型对象 如 Boy.prototype = new Persion();
      
        //混合继承:原型继承和类继承
        //  父类 
        function Persion(name,age){ 
        	this.name = name; 
        	this.age = age; 
        }
        Persion.prototype = {
        	constructor:Persion, //此处可以不这样写  也可以通过Object.defineProperty()
        	sayHello:function  () {
        		alert('Hello world');
        	}
        }
  
        // 子类 
        function Boy(name,age,sex){ 
        	//call apply 实现继承 只复制了父类的模板
        	//为了更好的解耦  此处Persion = Boy.superClass.constructor
        	Boy.superClass.constructor.call(this,name,age);
        	this.sex = sex;
        }
          extend(Boy
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值