javascript - FUNCTIONS 的继承正在成为一场噩梦

标签 javascript node.js oop inheritance prototype

我正在研究继承的概念,现在的情况是让我们有一个空的构造函数

function Constructor(/* i am an empty function  */ );

现在我们要向 Object.prototype 添加属性并创建构造函数的实例

Object.prototype.game = "hello i am a game";
 let a =  new Constructor();
 a.game();

现在我们知道输出将是“hello i am a game”。因此var a继承自Object 因此构造函数继承自 Object 因此

Constructor.__proto__ === Object.prototype

必须是正确,而不是为什么结果是错误

最佳答案

Constructor.proto === Object.prototype

不,这不应该是真的。正确的应该是:

a.__proto__ === Constructor.prototype

但是(在本例中)

Constructor.prototype.__proto__ === Object.prototype

应该是真的。

<小时/>

第一个直接来自原型(prototype)定义。 从构造函数创建的对象的 __proto__ 属性等于该函数的 prototype

第二个事实是 Constructor.prototype 也是一个对象 - 并且是使用 Object 构造函数创建的(因此与第一种情况类似,其 __proto__ 必须等于构造函数的 prototype,即 Object.prototype)。

PS。但要直接回答你的问题,Constructor.__proto__ 等于什么,它是 Function.prototype (推理可能是这样的:这是因为 Function 对象是创建您的构造函数函数的人)。

关于javascript - FUNCTIONS 的继承正在成为一场噩梦,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47977621/

相关文章:

c# - 如何将这 4 个 SQL 表转换为 OO 类(Java 或 C#),但不使用 NHibernate/LINQ?

python - 面向对象编程基础 : inheritance & shadowing (Python)

javascript - 在发送给 Controller 时使用js时,将modelstate错误返回到 View

node.js - 如何从 Node.js 程序运行 Excel VBA?

javascript - 如何制作 bundle.css 和 bundle.js 文件

javascript - 获取类中的所有静态 getter

c++ - 对于这种情况,什么是好的构建模式? (分区工具)

asp.net - 带有JavaScript window.open()的奇怪IE7行为

javascript - NodeJS 'Cron' 包 - 每 20 秒运行一次的计划作业

javascript - 如何从 Angularjs 中的对象数组中检索数据?