问题标签 [prototypal-inheritance]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
70 浏览

javascript - 有没有办法将字段设置在子对象范围内,同时可以从父对象访问?

我正在使用 JavaScript 中的 OOP 做一些经验。我的目标是拥有一个父对象,该对象包含其他几个对象共有的方法,这些对象继承自该父对象。问题是,我希望父对象的方法能够读取子对象的字段。

我使用以下函数进行继承:

这些是一些示例对象:

现在,我期待d.getCode()回归'test',并且c.getCode()回归'foo'。问题是,两者都返回'foo'。变量geneticAnimal范围内,而不在Dog/Cat范围内。这意味着每当我创建一个继承自的新对象时Animal,该genetic变量都会被覆盖。证明:

我可以将genetic变量设置为varDog的私有变量:Cat

问题是,由于genetic它现在是私有的Dog,因此对象无法访问它Animal,从而使整个继承变得毫无意义。

你有什么办法解决这个问题吗?

编辑:另外,我想gentic保密,这样就不能在Dog/Cat实例中修改它。

0 投票
2 回答
299 浏览

javascript - javascript oop 访问从基础扩展“类”成员

我在 JavaScript 中使用原型继承,遇到了一个我不太明白的问题。许多 JS 继承示例显示从 sub 访问 super 的成员,但我需要从 super 访问 sub 的成员。

我正在构建一个工具来测试映射 Web 服务的性能。我想支持多个版本的 WMS 协议。我希望尽可能将所有共享功能/属性保留在 WMS 基类中,并且仅在必要时提供特定版本的实现细节。我的 WMS v1.1.1 函数如下所示:

我的 wms 函数(短版)如下:

然后我用这样的电话测试这个

我得到了正确定义和属性的descriptionParameters对象,但未定义。servicerequestversion

谁能帮我弄清楚如何从 wms111 访问正确的属性?

非常感谢任何帮助。

0 投票
1 回答
216 浏览

javascript - 如何在javascript中正确继承?

我的理解是,如果对象具有给定成员而不检查原型链,则“hasOwnProperty”返回true。但是当我从其他对象继承时,我会看到最后一个对象本身的所有成员。

考虑以下示例:

此代码打印:

如果我看一下调试器,我会看到:

但是,我删除了该apply行,一切都更有意义,但是它没有初始化基础对象:

现在我在调试器中看到:

据我所知,apply这就像......执行超类构造函数,因此超成员被正确初始化,但显然这会改变子对象的形状。

为什么会这样?在 JS 中继承的正确方法是什么——或者至少不那么混乱?

我正在查看有关它的一些信息,显然每个开发人员对如何做都有不同的感受。

问候。

0 投票
3 回答
245 浏览

javascript - Javascript 中的继承和 Object.Create

看看这段代码:

我不明白为什么对象 dict 中 dict[X].options.name 中的所有属性都具有相同的值(2)而 dict[X].name 中的属性具有不同的值?

0 投票
2 回答
11976 浏览

javascript - 如何继承 javascript 函数?

.__proto__是非标准且已弃用。

我应该如何继承原型创建一个对象但让该对象成为一个函数。

Object.create返回一个对象而不是一个函数。

new Constructor返回一个对象而不是一个函数。

动机: - 跨浏览器finherit

我不相信这是可能的,所以我们可能应该Function.create向 es-discuss 邮件列表提出一个

相关es讨论邮件

正如 es-discuss 线程中提到的,存在一个 ES:strawman<|原型运算符,它允许这样做。

让我们看看使用它会是什么样子<|

0 投票
2 回答
4230 浏览

javascript - 原型编程中的对象和原型有什么区别?

我试图理解创建和使用对象的“JavaScript 方式”,我认为我遇到了对对象和原型的误解。

在我开始的一个新项目中,我决定尝试原型继承。我很困惑这是否意味着我应该只创建一个我打算使用的对象,然后基于该对象创建其他对象,Object.create()例如:

或者,如果我应该创建一种类并使用Object.create().

在基于类的 OOP 方面有更多经验,后一种方法对我来说感觉更舒服(也许这就是足够的理由)。但我觉得原型继承的精神更多地出现在第一种选择中。

哪种方法更符合原型编程的“精神”?还是我完全错过了重点?

0 投票
2 回答
212 浏览

javascript - javascript继承同时节省内存

对不起,如果这是一个旧主题的转贴,但我确实搜索并找不到类似的帖子。

下面这段代码是我如何在我正在做的项目中进行 javascript 继承的示例,现在幸运的是,大多数最终用户的内存都非常低,winXP+EI7 设置,所以我希望保存每一点内存我能。

现在我的问题是:我实际上是否通过在构造函数的末尾设置 params = null 来保存任何内存,并且在我将 window.namespace.MyClass.MySubclass 指针分配给相同的值之后,我是否应该对 MyClass 指针执行相同的操作?

0 投票
5 回答
81358 浏览

javascript - 如何在 javascript 中访问对象原型?

在所有文章中都写到 JavaScript 是一种基于原型的语言,这意味着每个对象都有一个原型(或者更准确地说,原型链)。

到目前为止,我已经尝试了以下代码片段:

如何访问的原型对象object1?有没有一种浏览器中立的方式来做到这一点(我的意思是,不依赖于__proto__财产?看到这个链接,但也许自 2010 年以来有新的发展)如果我不能,你能分享一下幕后的理由吗?

0 投票
2 回答
248 浏览

javascript - 为什么在 javascript 中列出类的实际构造函数很重要

我在 javascript garden http://bonsaiden.github.com/JavaScript-Garden/上阅读有关 javascript 原型的内容,其中一个示例如下所示:

请注意读取确保将 Bar 列为实际构造函数的行。我真的不知道这是做什么的。我尝试过使用和不使用最后一行来制作 Bar() 的新实例。但是在这些实例上调用“值”或“方法”会返回完全相同的东西。所以我想知道,指定构造函数有什么需要(我假设必须有一个)?

谢谢你!!!

0 投票
5 回答
207 浏览

javascript - Javascript原型继承怪异

我正在尝试处理一些 javascript 继承示例,但我遇到了这个问题:

我得到了这个,我不知道为什么:

我知道我可以将未找到的方法放入构造函数中,但我试图通过原型修改来做到这一点。我在这里做错了什么?