提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
翻译|使用教程|编辑:李爽夏|2019-01-02 09:49:34.000|阅读 248 次
概述:本文介绍了如何在javascript构造函数中创建基本继承 。
# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>
相关链接:
【下载Infragistics Ultimate最新版本】
用javascript创建对象有四种方法。具体如下:
继承的实现因对象创建方法而异。本文将解释如何在函数构造函数之间创建继承。
假设您有一个函数:
function animal(name, age) { this.name = name; this.age = age; }
如果使用new操作符调用animal函数,将创建一个对象。这种对象创建方式也称为“构造函数调用模式”。
var dog = new animal('foo', 5); console.log(dog); var cat = new animal('koo', 3); console.log(cat);
对象dog和cat都有自己的名称和年龄属性。如果希望在所有对象之间共享属性或方法,请将其添加到函数原型中。
animal.prototype.canRun = function () { console.log('yes ' + this.name + ' can run !'); }
使用javascript原型链,dog和cat对象都可以访问canrun方法。
var dog = new animal('foo', 5); dog.canRun(); // yes foo can run var cat = new animal('koo', 3); cat.canRun(); // yes koo can run
接下来,让我们创建另一个构造函数——人:
function human(name, age, money) { this.name = name ; this.age = age ; this.money = money; } human.prototype.canEarn = function () { console.log('yes ' + this.name + 'can earn'); }
此时,人与动物的功能没有任何关系。然而,我们知道人也是动物。人工构造有两个问题。
上述两个问题可以通过在动物和人类功能构建者之间创建继承来消除。
您可以通过如下修改人工函数来解决代码复制的问题1:
function human(name, age, money) { animal.call(this, name, age); this.money = money; }
现在,在人类函数中,我们使用call方法手动传递当前对象作为动物函数中“this”的值。这种方法也称为间接调用模式。现在,可以创建一个人类对象实例,如下所示:
var h1 = new human('dj', 30, '2000 $'); console.log(h1);
到目前为止,我们已经解决了代码复制的第一个问题,但是人类的功能仍然与动物的功能无关。如果您尝试对h1对象调用canrun方法,javascript将向您抛出一个错误。
h1.canRun(); // throw error canRun is not a function
您可以通过将人类功能原型与动物功能构造函数原型链接来解决这个问题。有两种方法可以做到这一点。
使用γ原型
使用object.create()方法
您可以使用object.create()链接函数构造函数的原型,如下所示:
human.prototype = Object.create(animal.prototype);
您可以使用_uu proto_uuu链接函数构造函数的原型,如下所示:
human.prototype.__proto__ = animal.prototype;
更推荐object.create()方法,因为在许多浏览器中可能不支持_uuProto。在链接原型之后,在一种方式下,您已经在动物和人类函数构造函数之间创建了继承。人的对象实例可以读取动物功能的所有属性,并且可以执行动物功能方法。
下面列出了实现函数构造函数之间继承的完整源代码,供您参考:
function animal(name, age) { this.name = name; this.age = age; } animal.prototype.canRun = function () { console.log('yes ' + this.name + ' can run !'); } var dog = new animal('foo', 5); dog.canRun(); var cat = new animal('koo', 3); cat.canRun(); function human(name, age, money) { animal.call(this, name, age); this.money = money; } human.prototype = Object.create(animal.prototype); human.prototype.canEarn = function () { console.log('yes ' + this.name + 'can earn'); } // human.prototype.__proto__ = animal.prototype; var h1 = new human('dj', 30, '2000 $'); h1.canRun(); h1.canEarn();
要在函数构造函数之间创建继承,请始终执行以下两个操作:
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@pclwef.cn
TestAdvantage™ for WinForms代码调试包=完善的界面+全新的功能!
Infragistics Ultimate UI for Windows Forms,最丰富全面的WinForms界面包。
本文探讨 SQL Server 中 NULL 和空值之间的区别,并讨论如何有效地处理它们。
Unity 是一款功能极其丰富的游戏引擎,允许开发人员将各种媒体集成到他们的项目中。但是,它缺少最令人兴奋的功能之一 - 将 Web 内容(例如 HTML、CSS 和 JavaScript)直接渲染到 3D 场景中的纹理上的能力。在本文中,我们将介绍如何使用 DotNetBrowser 在 Unity3D 中将 Web 内容渲染为纹理。
DevExpress v24.2帮助文档正式发布上线了,请按版本按需下载~
本教程将向您展示如何用MyEclipse构建一个Web项目,欢迎下载最新版IDE体验!
TestAdvantage™ for WinForms代码调试包=完善的界面+全新的功能!
Infragistics Ultimate UI for ASP.NETASP.NET界面包是在任何设备上均为Web应用程序服务中敏捷的工具集
Infragistics Ultimate UI for Windows FormsInfragistics Ultimate UI for Windows Forms,最丰富全面的WinForms界面包。
Infragistics Ultimate UI for WPF提供高速的网格和图表,轻松创建仿Office应用程序的WPF界面框架
Infragistics jQuery / HTML5用于创建跨平台跨设备应用的HTML5 & jQuery开发框架
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@pclwef.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢