[翻译]JavaScript中对象的层次与继承(10)
作者:chenzhe 来源:chenzhe 发布时间:2008-12-31 13:36:00
标签:类,对象,继承,javascript,编程
没有多继承(Multiple Inheritance)
一些面向对象语言允许多继承。也就是,一个对象可以从不相关的多个父对象中继承属性和值。JavaScript并不支持多继承。
正如我们已经说的,属性值的继承发生在运行时,是通过JavaScript在对象的原型链中搜索一个属性值(实现的)。因为一个对象只有一个关联的原型,JavaScript不能动态地从多个原型链中继承属性。
在JavaScript中,你可以在一个构造函数中调用多个构造函数。这可以制造一种多继承的假象。举例来说,考虑如下的语句:
程序代码
function Hobbyist (hobby) {
this.hobby = hobby || "scuba";
}
function Engineer (name, projs, mach, hobby) {
this.base1 = WorkerBee;
this.base1(name, "engineering", projs);
this.base2 = Hobbyist;
this.base2(hobby);
this.projects = mach || "";
}
Engineer.prototype = new WorkerBee;
dennis = new Engineer("Doe, Dennis", ["collabra"], "hugo")
进一步假设WorkerBee的定义和我们之前看到的一样。在这种情况下,dennis对象有如下的属性:
程序代码
dennis.name == "Doe, Dennis"
dennis.dept == "engineering"
dennis.projects == ["collabra"]
dennis.machine == "hugo"
dennis.hobby == "scuba"
所以dennis确实从Hobbyist构造器中取得了hobby属性。然而,假设你之后又向Hobbyist构造器的原型中添加了属性:
程序代码
Hobbyist.prototype.equipment = ["mask", "fins", "regulator", "bcd"]
dennis对象并不会继承这个新的属性。


猜你喜欢
- 即使打开了strict和warnings选项也无妨,下面代码并无错误和警告。#!/usr/bin/perluse strict;use wa
- opencv OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows、Android和Mac
- //重新封装document对象 var Console={ Write:function(msg){alert(msg);} }; //P
- 因为要牵扯到小计,所以需要计算两次。想法:1、把查询到的结果,插入到临时表,2、把统计结果插入到临时表。3、查询临时表记录放置到游标中。4、
- 函数的增益值torch.nn.init.calculate_gain(nonlinearity, param=None)提供了对非线性函数增
- httpparser介绍:1.解析字节类型的http与https请求数据:2.支持已k-v形式修改请求数据:3.支持重新编码请求数据源码im
- 本文实例讲述了JS实现淡入淡出图片效果的方法。分享给大家供大家参考,具体如下:效果:鼠标移入时,图片由半透明逐渐变成清晰,移出时,由清晰变为
- 前言最近在数据库的一张表添加两个字段,后来提示什么磁盘空间不足什么什么的,后来数据库就断开连接了,之后就一直连接不上去后来,最后经过思考终于
- 要从tablename表中随机提取一条记录,大家一般的写法就是:SELECT * FROM tablename ORDER BY RAND(
- 前言ttkbootstrap 是一个基于 tkinter 的界面美化库,使用这个工具可以开发出类似前端 bootstrap 风格的 tkin
- 一、给定一个日期值,求出此日期所在星期的星期一和星期天的日期数据 例如给定一个日期 2010-09-01,求出它所在星期的星期一是2010-
- 最近在工作遇到一个难题。我所在的测试组有一套PC软件前端自动化工程,在进行自动化测试时,需要在一台古老的xp机器上运行,但这台古老的xp机器
- 可以任意转载,但转载时必须标明原作者charlee、原始链接http://tech.idv2.com/2006/11/23/javascri
- 最近由于项目需要,开始学习python,然后发现一个非常有用的python交互式编辑器,非常容易上手而且非常有用和实在,本博文是对学习jup
- 最近接触一个项目,要在多个虚拟机中运行任务,参考别人之前项目的代码,采用了多进程来处理,于是上网查了查python中的多进程一、先说说Que
- 本文实例讲述了Python Excel到CSV的转换程序。分享给大家供大家参考,具体如下:题目如下:利用第十二章的openpyxl模块,编程
- 本文实例讲述了python中反射用法。分享给大家供大家参考。具体如下:import sys, types,newdef _get_mod(m
- 一. 引言在数据分析和可视化领域,数据的有效呈现是至关重要的。Python作为一种强大的编程语言,提供了多种数据可视化工具和库。其中,Plo
- ImageFont模块定义了相同名称的类,即ImageFont类。这个类的实例存储bitmap字体,用于ImageDraw类的text()方
- 本文实例为大家分享了python实现网络五子棋的具体代码,供大家参考,具体内容如下服务器端:import osimport socketim