问题标签 [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.
javascript - 有没有办法将字段设置在子对象范围内,同时可以从父对象访问?
我正在使用 JavaScript 中的 OOP 做一些经验。我的目标是拥有一个父对象,该对象包含其他几个对象共有的方法,这些对象继承自该父对象。问题是,我希望父对象的方法能够读取子对象的字段。
我使用以下函数进行继承:
这些是一些示例对象:
现在,我期待d.getCode()
回归'test'
,并且c.getCode()
回归'foo'
。问题是,两者都返回'foo'
。变量genetic
在Animal
范围内,而不在Dog
/Cat
范围内。这意味着每当我创建一个继承自的新对象时Animal
,该genetic
变量都会被覆盖。证明:
我可以将genetic
变量设置为varDog
的私有变量:Cat
问题是,由于genetic
它现在是私有的Dog
,因此对象无法访问它Animal
,从而使整个继承变得毫无意义。
你有什么办法解决这个问题吗?
编辑:另外,我想gentic
保密,这样就不能在Dog
/Cat
实例中修改它。
javascript - javascript oop 访问从基础扩展“类”成员
我在 JavaScript 中使用原型继承,遇到了一个我不太明白的问题。许多 JS 继承示例显示从 sub 访问 super 的成员,但我需要从 super 访问 sub 的成员。
我正在构建一个工具来测试映射 Web 服务的性能。我想支持多个版本的 WMS 协议。我希望尽可能将所有共享功能/属性保留在 WMS 基类中,并且仅在必要时提供特定版本的实现细节。我的 WMS v1.1.1 函数如下所示:
我的 wms 函数(短版)如下:
然后我用这样的电话测试这个
我得到了正确定义和属性的descriptionParameters
对象,但未定义。service
request
version
谁能帮我弄清楚如何从 wms111 访问正确的属性?
非常感谢任何帮助。
javascript - 如何在javascript中正确继承?
我的理解是,如果对象具有给定成员而不检查原型链,则“hasOwnProperty”返回true。但是当我从其他对象继承时,我会看到最后一个对象本身的所有成员。
考虑以下示例:
此代码打印:
如果我看一下调试器,我会看到:
但是,我删除了该apply
行,一切都更有意义,但是它没有初始化基础对象:
现在我在调试器中看到:
据我所知,apply
这就像......执行超类构造函数,因此超成员被正确初始化,但显然这会改变子对象的形状。
为什么会这样?在 JS 中继承的正确方法是什么——或者至少不那么混乱?
我正在查看有关它的一些信息,显然每个开发人员对如何做都有不同的感受。
问候。
javascript - Javascript 中的继承和 Object.Create
看看这段代码:
我不明白为什么对象 dict 中 dict[X].options.name 中的所有属性都具有相同的值(2)而 dict[X].name 中的属性具有不同的值?
javascript - 如何继承 javascript 函数?
.__proto__
是非标准且已弃用。
我应该如何继承原型创建一个对象但让该对象成为一个函数。
Object.create
返回一个对象而不是一个函数。
new Constructor
返回一个对象而不是一个函数。
动机: - 跨浏览器finherit
我不相信这是可能的,所以我们可能应该Function.create
向 es-discuss 邮件列表提出一个
正如 es-discuss 线程中提到的,存在一个 ES:strawman<|
原型运算符,它允许这样做。
让我们看看使用它会是什么样子<|
javascript - 原型编程中的对象和原型有什么区别?
我试图理解创建和使用对象的“JavaScript 方式”,我认为我遇到了对对象和原型的误解。
在我开始的一个新项目中,我决定尝试原型继承。我很困惑这是否意味着我应该只创建一个我打算使用的对象,然后基于该对象创建其他对象,Object.create()
例如:
或者,如果我应该创建一种类并使用Object.create()
.
在基于类的 OOP 方面有更多经验,后一种方法对我来说感觉更舒服(也许这就是足够的理由)。但我觉得原型继承的精神更多地出现在第一种选择中。
哪种方法更符合原型编程的“精神”?还是我完全错过了重点?
javascript - javascript继承同时节省内存
对不起,如果这是一个旧主题的转贴,但我确实搜索并找不到类似的帖子。
下面这段代码是我如何在我正在做的项目中进行 javascript 继承的示例,现在幸运的是,大多数最终用户的内存都非常低,winXP+EI7 设置,所以我希望保存每一点内存我能。
现在我的问题是:我实际上是否通过在构造函数的末尾设置 params = null 来保存任何内存,并且在我将 window.namespace.MyClass.MySubclass 指针分配给相同的值之后,我是否应该对 MyClass 指针执行相同的操作?
javascript - 如何在 javascript 中访问对象原型?
在所有文章中都写到 JavaScript 是一种基于原型的语言,这意味着每个对象都有一个原型(或者更准确地说,原型链)。
到目前为止,我已经尝试了以下代码片段:
如何访问的原型对象object1
?有没有一种浏览器中立的方式来做到这一点(我的意思是,不依赖于__proto__
财产?看到这个链接,但也许自 2010 年以来有新的发展)如果我不能,你能分享一下幕后的理由吗?
javascript - 为什么在 javascript 中列出类的实际构造函数很重要
我在 javascript garden http://bonsaiden.github.com/JavaScript-Garden/上阅读有关 javascript 原型的内容,其中一个示例如下所示:
请注意读取确保将 Bar 列为实际构造函数的行。我真的不知道这是做什么的。我尝试过使用和不使用最后一行来制作 Bar() 的新实例。但是在这些实例上调用“值”或“方法”会返回完全相同的东西。所以我想知道,指定构造函数有什么需要(我假设必须有一个)?
谢谢你!!!
javascript - Javascript原型继承怪异
我正在尝试处理一些 javascript 继承示例,但我遇到了这个问题:
我得到了这个,我不知道为什么:
我知道我可以将未找到的方法放入构造函数中,但我试图通过原型修改来做到这一点。我在这里做错了什么?