封装继承
通过上面的学习,我们把继承封装,这样就可复用了。代码如下
function extend(Child, Parent) {
var F = function(){};
F.prototype = Parent.prototype;
Child.prototype = new F();
Child.prototype.constructor = Child;
Child.uber = Parent.prototype;
}
我们可以调用这个方法实现继承。
extend(TwoDShape, Shape);
extend(Triangle, TwoDShape);
许多开源库都实现了继承,如YUI 你可以如下用法
YAHOO.lang.extend(Triangle, Shape)
复制属性
继承也不过是为了代码复用,我们可以利用复制属性的方法。看看如下代码
function extend2(child,parent){
var p = parent.prototype;
var c = child.prototype;
for(var i in p){
c[i] = p[i];
}
c.uber = p;
}
上面的代码,循环了父对象的所有属性,并不像上个例子,没有必要重置child.prototype.constructor。因为这次是扩展了child.prototype.并不是重写。因此这个constructor的属性指向的是当前的值。
当然这个继承方法比第一种效率更低。原因就是第二种的child.prototype的属性被复制了,并不像第一种通过prototype链去查找的。
但是一定要记住,只有属性被复制了。所有的对象并没有被复制,仅仅专递的是引用而已。
虽然效率低点,但是仅仅是属性复制而已,有好处的是,当调用方法的时候,会更快的找到所需要的方法(也就是查找更少的prototype链。)
分享到:
相关推荐
在JavaScript中继承是一个非常复杂的话题,比其他任何面向对象的语言中的继承都复杂得多。在大多数其他面向对象语言中,继承一个类只需使用一个关键字即可。与它们不同,在JavaScript中要想达到传承公用成员的目的,...
Javascript继承机制原理 可以参考下
浅析Javascript原型继承,浅析Javascript原型继承
javascript控件开发之继承关系的源码
JavaScript继承与多继承实例分析.docx
javascript继承之为什么要继承.docx
javascript 继承派生等问题的资料,都是网上收集的,学会apply call 就懂js面向对象的原理了。
JavaScript继承机制研究.pdf
JavaScript继承的三种方法实例 继承 继承: 首先继承是一种关系,类(class)与类之间的关系,JS中没有类,但是可以通过构造函数模拟类,然后通过原型来实现继承。 继承也是为了数据共享,js中的继承也是为了实现...
理解Javascript原型继承原理
javascript 五种继承简介。
JavaScript面向对象编程中使用继承,详细讲解四种实现方法的原理。
javascript原型继承,prototype的使用,可以像java一样继承
Javascript继承[参考].pdf
JavaScript Inheritance ...And you think you’re so clever ...JavaScript的原型继承比类继承有更强大的表现力,现在就让我们来看看。 Java JavaScript 强类型 弱类型 静态 动态 基于类 基于原型 类
Javascript原型继承Javascript原型继承Javascript原型继承
JavaScript继承机制探讨及其应用.pdf
浅析javascript原型继承机制,浅析javascript原型继承机制
我们还知道,面向对象编程有三个重要的概念 - 封装、继承和多态。 但是在JavaScript的世界中,所有的这一切特性似乎都不存在。 因为JavaScript本身不是面向对象的语言,而是基于对象的语言。
详解Javascript继承的实现_.docx