节点打印'undefined'BaseObject.Shell中的原型

Node Printing 'undefined' For BaseObject.Prototype in Shell

本文关键字:原型 Shell undefined 打印 节点 BaseObject      更新时间:2023-09-26

我一直在谷歌上搜索这个问题,但无论如何我似乎都找不到一个满意的答案。我意识到我要么在Node上做错了什么,要么完全不知道原型继承是如何工作的,但对我来说,这只是让我发疯,不知道为什么,所以我将感谢任何反馈,帮助我了解我做错了什么。

我有三个类。这些类可以做任何事情,但为了讨论方便,我们将它们命名为

  • Mammal.js
  • Human.js
  • . js

Mammal是基类,Human是子类,test是执行代码的类。现在,我知道有很多方法可以扩展另一个对象。无论是使用Object.create()还是构造函数配置。在这个实例中,我使用构造函数来创建新对象,并且我将子类的原型直接指向它继承的对象。因此,默认情况下,如果子类在子类中找不到该方法,则子类必须沿着原型链向上到它所继承的对象。

现在,当我这样做,它的工作…类型的?我可以调用其中一个函数,它会表现得好像它被覆盖了,但是当我试图通过node中的console.log()检查对象或原型或任何信息时,我几乎什么也得不到。这让我非常困惑,我很想帮助弄清楚为什么会这样。

下面是我使用的类和输出。

<标题> Mammal.js h1> Human.js h1> . js h1> 输出
------------------------
Object Inspection
------------------------
{}
------------------------
Prototype Inspection
------------------------
undefined
------------------------
Stringify Inspection
------------------------
undefined
------------------------
Object printDebug
------------------------
Human prototype: undefined
------------------------
Object printDebug
------------------------
Human
------------------------
Speak
------------------------
I am a Human.

我的期望是人类。原型会指向一些东西。特别是被声明的哺乳动物对象。当它真正拥有它"扩展"的哺乳动物类的方法时,它不会将人类对象作为一组空括号输出。它不会显示原型参考吗?很明显,它的原型链中有一些方法,因为它在执行speak命令时没有任何问题。

我误解了什么?

啊。有人为我澄清了这个问题。我把人类混为一谈了。Prototype属性使用对象的_ Prototype _属性。后者是当在当前对象中找不到方法时将遍历的引用。因此它返回undefined是有意义的。因为人类。原型是完全独立于人类的。_ 原型对此建议的解决方案也是使用object . getprototypeof (object),但这在旧的opera浏览器中不起作用,从MDN说。所以,注意了!