网易首页 > 网易号 > 正文 申请入驻

JavaScript高级编程技巧:用JavaScript继承和扩展对象

0
分享至

如果你熟悉面向对象编程,你很可能熟悉子类(Subclassing)和继承(Inheritance)。 然而,继承得到了一个坏名声,这是因为有些开发人员在需要修改程序时将其视为一个全面的解决方案,导致class层次结构可能变得难以管理。

我们还可以使用其他设计模式来使我们的应用程序更易于理解并随时可以进行更改。下面我将向你们展示如何使用继承以及装饰器和复合模式来改进您的程序设计。

继承

继承的理念是“一个对象“是”另一个对象的专用版本”。有一个父类(也称为超类(superclass)),它定义了我们的对象的基本属性。 还有一个子类(子类(subclass))继承父类的属性。

继承的例子是:一只狗和一只贵宾犬,所有的狗都有一些特征,比如四条腿和吠叫的能力。而贵宾犬也具有这种能力所以它是一种狗。SUV是一种车辆。圆是一个形状。如果我们设计一个用于创建形状的程序,下面的图就是我们的class层次结构的样子。

拥有Shape类的好处是我们可以重用我们在其他类中定义的属性和方法。

注意‘getArea’方法在我们的每个子类中都被重新定义了。 我们不必重新定义这个方法,我们可以这样做的,以取代我们父类的方法实现,那是因为每个形状都有自己的计算面积的方法。

覆盖子类中的父方法是多态的一个例子。 多态性是对象具有多种形式的能力。 它允许子类具有与它们的超类同名的方法,可以具有不同的实现方法。

这是我们的代码,看起来像创建一个Shape和Circle子类的例子:

这种设计选择的缺点之一是,如果你决定父类需要改变,那么子类可能也需要改变,以及我们创建的所有对象。

例如,假设我们稍后决定用对象替换Shape类的x和y参数会更好。因此我们需要更改我们所有子类的构造函数以及我们实例化的每个对象的参数。

我们可以看到这很容易变成问题。 我们必须确保我们第一次得到我们的设计是正确的,这样我们才能避免做出改变。 但这不实际,也不是我们需要的。 程序是一个不断发展的实体,如果我们能够灵活地进行修改,对我们的开发人员来说更好。 至少,我们不应该有超过一层的子类。

装饰器模式

装饰器允许我们在创建对象后附加属性。这意味着我们可以添加功能而不需要子类或关注对象的实现。

我们可以使用Shape类来创建圆,并用我们想要的其他属性来包装它,而不是想一个圆是一个形状。下面是使用装饰器创建圆对象的替代方法:

我们可以使用装饰器添加或修改Shape类的成员,而不是继承它的子类。 用我们的形状的例子,你可能会发现你只是想创建一个具有所有你需要的属性的圆形对象,并为其他形状做同样的事情。没关系的,因为装饰器允许我们重用我们的Shape类中的代码,并修改它与每个形状不同的功能。所以我们将拥有更多的对象,而且更多的对象比更多的子类更容易管理。

这种模式不限于创建图形。您可以在任何想要将对象添加东西的情况下使用它。例如,我们可能有一个类来处理用户注册到我们的帐户。 在将他们的信息保存到我们的数据库之前,检查输入是否有效并且不包含任何恶意脚本这一个明智举动,我们可以用一种方法来修饰类,以便首先验证信息。 这个相同的装饰器可以在我们接受用户输入的应用程序中的任何地方重用。

复合模式

对象可以由其他对象组成。 应用程序的视图可以被认为是由其他视图组成的组件。 如果我们在制作游戏,我们的游戏世界会显示我们所创建的所有图形,如圆形和方形。 每次我们更新我们的内容时候,我们都需要重新绘制每一个元素。 我们需要一种将所有元素作为一个组来管理的方法。

这是复合模式可以帮助我们的地方。我们可以创建一个负责所有元素的类,当我们想重绘元素时,我们称这个类的绘制方法,它将调用每个单独元素的绘制方法。

一个网页也可以被认为是一个组件。 这个组件可以有一个菜单,一个侧边栏和一个博客文章。 这个帖子将是一个具有图片,标题和正文的子组件。 我们的主要应用程序组件的绘制方法将调用菜单,侧边栏和后期绘制。 帖子组件将依次调用帖子图片,标题和正文的绘制。

以下是网页分成几个部分的视图:

这种模式不限于创建视图。例如,如果我们在制作游戏,我们可能会有一个组件来管理屏幕上的元素,管理音频的组件以及管理游戏状态的组件。这些都将在我称之为游戏引擎的组件中。 游戏引擎会有一个初始化方法,它会调用每个子组件的初始化方法。 这是使用复合模式的力量。 我们可以把它们当作一个对象来处理,而不是处理个别对象。

结论

继承允许我们通过用另一个对象来定义一个对象来重用代码。 修饰器模式允许我们在不改变原始代码或子类的情况下将responsibilities添加到对象中。 复合模式模拟部分 - 整体关系,这些模式并不意味着孤立地使用。

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
一个人身上最了不起的能力:两个字

一个人身上最了不起的能力:两个字

知和大叔
2024-04-25 23:42:00
人住几楼运气更旺?真不是迷信,难怪有钱人都争着买这几层!

人住几楼运气更旺?真不是迷信,难怪有钱人都争着买这几层!

科学发掘
2024-04-26 07:25:08
金龟子王宁住北京8000万3层别墅,亲家公出镜,二人的称呼显陌生

金龟子王宁住北京8000万3层别墅,亲家公出镜,二人的称呼显陌生

阿芒娱乐说
2024-04-27 16:09:19
山姆奶油西瓜上热搜,8块一斤真的贵吗?

山姆奶油西瓜上热搜,8块一斤真的贵吗?

映射生活的身影
2024-04-26 16:25:32
贵州区划调整“拆分毕节,3地划归六盘水,遵义分得2地”的策略分析

贵州区划调整“拆分毕节,3地划归六盘水,遵义分得2地”的策略分析

娱乐圈的笔娱君
2024-04-27 17:32:24
浙江一墓地每到周末就传出尖锐鸣叫声!什么情况?

浙江一墓地每到周末就传出尖锐鸣叫声!什么情况?

都市快报橙柿互动
2024-04-27 17:12:13
黄景瑜、王一博体型差引争议,身高问题成焦点!

黄景瑜、王一博体型差引争议,身高问题成焦点!

一剑化三亲
2024-04-27 08:22:43
哈马斯高官:可以放下武器,如能按照1967年以前的边界建立一个独立的巴勒斯坦国

哈马斯高官:可以放下武器,如能按照1967年以前的边界建立一个独立的巴勒斯坦国

红星新闻
2024-04-26 14:53:20
单亲妈妈为支持都美竹转账19万余元欲全部追回,都美竹否认“卖惨”骗钱 聊天记录曝光

单亲妈妈为支持都美竹转账19万余元欲全部追回,都美竹否认“卖惨”骗钱 聊天记录曝光

红星新闻
2024-04-26 12:23:48
那些年,西方一起扔过的回旋镖:中国你又赢了,但代价是什么呢?

那些年,西方一起扔过的回旋镖:中国你又赢了,但代价是什么呢?

孤烟暮蝉
2024-04-26 18:09:11
“瞒不住了”!原来他就是韩红的父亲,难怪30多年来无人敢招惹她

“瞒不住了”!原来他就是韩红的父亲,难怪30多年来无人敢招惹她

娱乐的小灶
2024-04-24 15:24:24
特斯拉汽车国区 EAP 订阅制上线,每月 699 元/每季 1399 元

特斯拉汽车国区 EAP 订阅制上线,每月 699 元/每季 1399 元

IT之家
2024-04-27 09:03:22
“012642”,丈夫→妻子→儿子,共用一个警号!

“012642”,丈夫→妻子→儿子,共用一个警号!

北青网-北京青年报
2024-04-27 16:41:06
德国防长:俄罗斯武器已堆满仓库!美国利用援乌拨款提高军工产能

德国防长:俄罗斯武器已堆满仓库!美国利用援乌拨款提高军工产能

鹰眼Defence
2024-04-26 18:30:26
运营商财经网康钊:中国刚想全面使用免费的芯片技术RISC-V

运营商财经网康钊:中国刚想全面使用免费的芯片技术RISC-V

运营商财经网
2024-04-26 08:02:08
船记:为小卡感到难过 他强迫自己打季后赛但身体不配合啊

船记:为小卡感到难过 他强迫自己打季后赛但身体不配合啊

直播吧
2024-04-27 11:54:23
“靖康之耻”有多虐心?皇帝生母每日接客超百人,公主肛裂而死

“靖康之耻”有多虐心?皇帝生母每日接客超百人,公主肛裂而死

阿胡
2024-03-28 15:30:23
关于批准《国务院关于工人退休、退职的暂行办法》的决议

关于批准《国务院关于工人退休、退职的暂行办法》的决议

环球通信
2024-04-27 00:12:04
爆笑哈哈哈!那些笑死人的买家秀!这衣服真是买不了一点!

爆笑哈哈哈!那些笑死人的买家秀!这衣服真是买不了一点!

王二哥老搞笑
2024-04-26 11:15:49
谢晖:球员在比赛尾声仍然无法放下包袱,我觉得这是我的责任

谢晖:球员在比赛尾声仍然无法放下包袱,我觉得这是我的责任

懂球帝
2024-04-27 00:02:10
2024-04-27 19:12:49
webstack前端栈
webstack前端栈
WEB前端技术分享
56文章数 278关注度
往期回顾 全部

科技要闻

特斯拉这款车型刚上市几天,就上调价格

头条要闻

去世半年前 90岁老太被摄影师外孙女爆改成"19岁少女"

头条要闻

去世半年前 90岁老太被摄影师外孙女爆改成"19岁少女"

体育要闻

时代要落幕了?詹姆斯杜兰特陷0-3绝境

娱乐要闻

金靖回应不官宣恋情结婚的原因

财经要闻

北京房价回到2016年

汽车要闻

5月上市/智能化丰富 海狮 07EV正式到店

态度原创

手机
艺术
数码
家居
军事航空

手机要闻

最高7499元,vivo X100 Ultra售价提前曝光

艺术要闻

画廊周北京迎来第八年, “漂留” 主题聚集 30 余家艺术机构与 40 场展览

数码要闻

苹果已停止升级 Mac 起步内存,库克更看重优化软硬件集成度

家居要闻

光影之间 空间暖意打造生活律动

军事要闻

佩洛西称俄在支持"挺巴"的美国反战学生 扎哈罗娃回应

无障碍浏览 进入关怀版