网络编程
位置:首页>> 网络编程>> JavaScript>> [翻译]JavaScript中对象的层次与继承(2)

[翻译]JavaScript中对象的层次与继承(2)

作者:chenzhe 来源:chenzhe 发布时间:2008-12-31 13:36:00 

标签:类,对象,继承,javascript,编程


表1是对这些区别的摘要。这篇文章的剩下的部分会描述使用JavaScript构造器和prototype来创建对象层次的细节,并且对比在Java中完成相同工作的方法。


表 1基于类(Java)与基于原型(JavaScript)的对象系统的对比

基于类(Java)基于原型(JavaScript)
类和实例是不同的实体。所有的对象都是实例。
使用类定义来定义类;使用构造函数来将类实例化。使用构造函数定义,并且创建一些列对象。
使用new操作符来创建一个新的对象。一样。
使用类定义来定义已存在类的子类,以此来创建对象层次。通过将一个对象设置为关联到某个构造函数的原型,从而创建对象层次。
通过类链(class chain)继承属性。通过原型链继承属性。(prototype chain)
类定义设置类的所有实例的所有属性。不能再运行时动态添加新的属性。


构造函数或者是原型指定了一系列原始(initial)属性。可以动态地向个别对象或者一个对象集合添加或删除属性。



Employee雇员实例

本文剩下部分的工作就是实现图1中简单的employee雇员层次。

一个简单的对象层次

图 1

    * Employee有name属性(默认值为空字符串)和dept属性(默认值"general")。
    * Manager以Employee为基础。它添加了一个reports属性(默认值是空的数组,我们意在让其成为一个值为Employee对象的数组)。
    * WorkerBee同样以Employee为基础。它添加了projects属性(默认值是空的数组,我们意在让其成为一个值为字符串的数组)
    * SalesPerson以WorkerBee为基础。它添加了quota(配额)属性(默认值100)。它还将dept属性的值覆盖为"sales",表明所有的销售人员都在同一个部门。
    * Engineer以WorkerBee为基础。它添加了machine(机器)属性(默认值为空字符串)。它同样将dept属性的值覆盖为" engineering "。

0
投稿

猜你喜欢

手机版 网络编程 asp之家 www.aspxhome.com