WEB开发网
开发学院网页设计JavaScript javascript中的继承 阅读

javascript中的继承

 2009-09-10 00:00:00 来源:WEB开发网   
核心提示:首先在js中的继承是Prototype-based ,不像一般的oo语言,javascript中的继承,比如java,c++是Class-based 的, 我们来比较一下这两种方式 : 1 在Class-based 中的类和实例是不同的实体,Manager有一个reports 属性,SalesPerson 有一个quo

首先在js中的继承是Prototype-based 。不像一般的oo语言,比如java,c++是Class-based 的。

我们来比较一下这两种方式 :

1 在Class-based 中的类和实例是不同的实体,而在Prototype-based中所有对象都是实例。

2 在Class-based中定义一个类使用class关键字来定义。实例化一个对象,使用构造方法。而在Prototype-based,定义和创建一个对象都使用构造器函数。

3 在Class-based中构造一个继承,需要定义一个类,然后作为存在的类的子类。而在Prototype-based中,则是需要标记这个对象作为构造器函数的prototype 。

4 在Class-based中继承属性通过class chain。而在Prototype-based则是通过prototype chain。

下来我们来看一个我们需要实现的继承体系(后面有图):

javascript中的继承

Manager 和WorkerBee 继承Employee ,而SalesPerson 和Engineer继承WorkerBee.

其中,Employee有一个name 属性,Manager有一个reports 属性,SalesPerson 有一个quota 属性,Engineer有一个machine 属性。

function Employee () { 
this.name = ""; 
this.dept = "general"; 
} 
 
function Manager () { 
this.reports = []; 
} 
Manager.prototype = new Employee; 
function WorkerBee () { 
this.projects = []; 
} 
WorkerBee.prototype = new Employee; 
function SalesPerson () { 
  this.dept = "sales"; 
  this.quota = 100; 
} 
SalesPerson.prototype = new WorkerBee; 
function Engineer () { 
  this.dept = "engineering"; 
  this.machine = ""; 
} 
Engineer.prototype = new WorkerBee; 

1 2 3  下一页

Tags:javascript 继承

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接