javascript组合继承
来源:互联网 发布:杰西利弗莫尔知乎 编辑:程序博客网 时间:2024/06/15 18:11
javascript继承有几种继承方式,现在来说说其中的组合继承。
组合继承是结合了原型链和借用构造函数这两种技术的继承方式,分别利用它们的长处,避免了短处。那就先说说这两种技术吧。
原型链
原型链就是实例与原型之间的链条。
子类型构造函数 与 超类型构造函数 之间没有关联,只需将 子类型构造函数的原型 作为 超类型构造函数的实例。这样,子类型构造函数的实例 就可以共享 超类型构造函数原型的方法 以及 超类型构造函数的属性。
如:
var subType.prototype = new superType();
原型链的短处在于:当subType.prototype作为实例时拥有的superType构造函数里的属性,在它作为subType的原型时,这些属性就作为原型的属性被subType的实例共享;还有,因为两个类型的构造函数之间没有关联,在创建subType的实例时,不能向superType构造函数传递参数。
借用构造函数
在 子类型构造函数里 调用 超类型构造函数,使用 call() 或 apply() 方法。
如:
superType.call(this); 或 superType.call(this,参数);
通过这样可以将superType构造函数里的属性作为特定的,即subType的实例调用时,这些属性也是特属于每一个实例,而不是共享的。同时,还可以向superType构造函数传递参数。
然而,定义在superType.prototype里的方法,对subType是不可见的。
这两个方法都有其所长,也有其所短。所以将它们组合起来,这就有了组合继承。了解了原型链与借用构造函数就不难理解组合继承了。
组合继承
组合继承是通过原型链继承原型的方法,通过借用构造函数继承属性。这样就可以将属性与方法分开继承,方法被所有实例共享,而属性则是特属于每一个实例。
当然,组合继承也有其缺点,那就是超类型的属性被继承了两次,一次是子类型原型继承,另一次是子类型实例继承,只是实例继承的属性屏蔽了原型继承的属性。
- JavaScript 继承---组合继承
- JavaScript的继承--组合继承
- Javascript寄生组合继承
- javascript组合继承
- JavaScript寄生组合继承
- JavaScript中继承(三) -- 组合继承
- javascript继承,原型链继承、借用构造函数、组合继承
- JavaScript组合继承的一点思考
- 5.javascript 对象继承 ---组合模式
- javascript 的 继承(三) 之 组合继承
- 继承 组合
- 组合 继承
- 继承、组合
- 组合继承
- 组合、继承
- 组合 继承
- JavaScript高级程序设计一书中对组合继承的理解
- JS继承--组合继承
- js实现跨域(jsonp, iframe+window.name, iframe+window.domain, iframe+window.postMessage)
- mac java开发踩过的坑
- 子线程为什么不能更新UI
- html块级元素和行内元素
- 5、struts2 拦截器
- javascript组合继承
- linux alsa parameters
- ExtJS的内置校验vtype
- JS 密码加密
- CUDA学习笔记十二
- JavaScript闭包
- 经典排序算法之快速排序
- Android之Volley框架使用优化--单例模式实现请求队列
- 活动的生命周期