节点打印'undefined'BaseObject.Shell中的原型
Node Printing 'undefined' For BaseObject.Prototype in Shell
我一直在谷歌上搜索这个问题,但无论如何我似乎都找不到一个满意的答案。我意识到我要么在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说。所以,注意了!
- 使用“;这个“;JavaScript原型方法中的关键字
- 引用类变量中的原型方法
- 如何从对象的原型方法访问JavaScript对象属性
- 为什么要包装每一个原型“;类“;JS中具有匿名函数的对象
- Node.js中的JavaScript原型对象效率
- 重载JS'firefox中的对象原型
- “util.inherits”和在NodeJS中扩展原型之间的区别
- 附加到原型属性的Do函数没有闭包
- 使用方括号访问插件原型函数
- 为什么JSON.stringify没有序列化原型值
- 为什么要返回'这'在导致循环的JavaScript原型中
- 带有对象/原型的链式承诺(Q延期)
- 如何覆盖原型中的事件侦听器
- 如何在Mocha/Chai中测试JS原型(非模块)
- 我将如何将Base的原型分配给User
- Django可以'不能在设置中导入ckeditor,但可以在shell中导入
- 原型和用法 Javascript
- 别名或以其他方式合并两个具有不同名称的相同对象原型
- JavaScript对象不是从原型链继承的
- 节点打印'undefined'BaseObject.Shell中的原型