Javascript玩转继承(二)

在《Javascript玩转继承(一)》中,我主要介绍了对象伪装来实现继承。我们在这里先来说一下这种方式的优缺点。

毋庸置疑,这种方式是比较容易理解的,在子类中调用父类的构造函数。另外,这种方法最大的一个优点就是说构造继承可以实现多继承,复习下这个代码:

function A()
{    }
function B()
{    }
function C()
{
 this.father=A;
 this.father();
 delete this.father;
 this.father=B;
 this.father();
 delete this.father;
}

但是这种方式也有着这样和那样的缺点:

熟悉面向对象的我们来看这样一段C#代码:

class Program
{
static void Main(string[] args)
{
B b=new B();
bool temp = (typeof(A)).IsInstanceOfType(b);
Console.WriteLine(temp);
}
}
class A
{
public A()
{

}
}
class B : A
{
public B()
{

}
}

结果呢?b当然是A的一个实例:

时间: 2024-11-03 14:27:55

Javascript玩转继承(二)的相关文章

Javascript玩转继承(三)_javascript技巧

首先,我们来看非主流继承一:实例继承法. 我也不说那么多废话了,既然是非主流继承,就一定不常用,既然不常用还存在,那就只有一个因素,他用于特定的场合.实例继承法,就主要用于核心对象的继承,也是目前为止唯一能够解决核心对象继承的方式. 核心对象的继承拥有一定的价值,比如说Error对象,我们公司可能要自己实现一个Error 类来简化今后的开发,那么这个时候我就要使用实例继承法来继承Error. 代码如下: 复制代码 代码如下: function ExtendingError(mes){    va

Javascript玩转继承(一)_javascript技巧

Javascript究竟是一门面向对象的语言,还是一门支持对象的语言,我想每个人都有着自己的看法.那些Javascript忠实的Fans一定讲Javascript是一门面向对象的语言,像<Javascript王者归来>一书中对Javascript的说法是基于原型的面向对象.我谈谈我个人的看法.面向对象的三个特征,继承,多态,封装,Javascript虽然实现起来不像Java,C#等面向对象的语言来得快,但是毕竟也有着一定的支持.因此说Javascript是面向对象的语言是有着一定道理的,但是从

Javascript玩转继承(二)_javascript技巧

毋庸置疑,这种方式是比较容易理解的,在子类中调用父类的构造函数.另外,这种方法最大的一个优点就是说构造继承可以实现多继承,复习下这个代码: 复制代码 代码如下: function A(){    }function B(){    }function C(){    this.father=A;    this.father();    delete this.father;    this.father=B;    this.father();    delete this.father;}

Javascript玩转继承(一)

最近一直在学Javascript,打算写一些文章,算做自己的学习心得吧,也可以算是学习笔记.没有系统的知识点,太基础的不想写,主要是写一些自己觉得有价值的地方. 今天写第一篇. Javascript究竟是一门面向对象的语言,还是一门支持对象的语言,我想每个人都有着自己的看法.那些Javascript忠实的Fans一定讲Javascript是一门面向对象的语言,像<Javascript王者归来>一书中对Javascript的说法是基于原型的面向对象.我谈谈我个人的看法.面向对象的三个特征,继承,

Javascript玩转Prototype(二)

上文一直在罗嗦GOF的原型模式,在本文中讲开始正式讨论Javascript的Prototype.对于Javascript的初学者来说,Prototype是个蛮高深的话题,其实并不尽然. 我说不尽然,意思是说理解Prototype的一般用法很简单.但是真正能做到融会贯通理解Prototype确实是件很难的事情. 今天我就从Prototype的基本开始讲.上文中我讲了原型模式.其实在Javascript中原型也是这个意思.Javascript中对象的原型属性的解释是:返回对象类型原型的引用.这是一个

Javascript玩转继承(三)

在前两篇文章中,介绍了构造继承和原型继承.今天把剩下的两种写完,这两种的应用相对于前两种来说应用很少,因此我把他们称为是非主流继承方式. 首先,我们来看非主流继承一:实例继承法. 我也不说那么多废话了,既然是非主流继承,就一定不常用,既然不常用还存在,那就只有一个因素,他用于特定的场合.实例继承法,就主要用于核心对象的继承,也是目前为止唯一能够解决核心对象继承的方式. 核心对象的继承拥有一定的价值,比如说Error对象,我们公司可能要自己实现一个Error 类来简化今后的开发,那么这个时候我就要

Javascript玩转Prototype(一)——先谈C#原型模式

在<Javascript玩转继承(二)>中,我使用了原型继承法来实现Javascript的继承,那原型究竟奥秘何在.在这篇文章中,我就主要针对原型来展开讨论. 抛开Javascript,我们先来看我们熟悉的常规的面向对象语言.在23种设计模式中,大家一定会记得有一种设计模式--原型模式.我们先来看一下结构图: (原图引自:http://terrylee.cnblogs.com/archive/2006/01/16/317896.html) 先来复习一下原型模式:看到这个图,大家一定会注意到这个

Javascript面向对象编程(二):构造函数的继承

Javascript面向对象编程(二):构造函数的继承 作者: 阮一峰 日期: 2010年5月23日 这个系列的第一部分,主要介绍了如何"封装"数据和方法,以及如何从原型对象生成实例. 今天要介绍的是,对象之间的"继承"的五种方法. 比如,现在有一个"动物"对象的构造函数. function Animal(){ this.species = "动物"; } 还有一个"猫"对象的构造函数. function

JavaScript模拟实现继承的方法

 这篇文章主要介绍了JavaScript模拟实现继承的方法,实例分析了javascript类的操作与模拟实现继承的技巧,具有一定参考借鉴价值,需要的朋友可以参考下     本文实例讲述了JavaScript模拟实现继承的方法.分享给大家供大家参考.具体分析如下: 我们都知道,在JavaScript中只能模拟实现OO中的"类",也就意味着,在JavaScript中没有类的继承.我们也只能通过在原对象里添加或改写属性来模拟实现. 先定义一个父类, ? 1 2 3 4 5 6 7 8 9 /