【发布时间】:2013-12-06 21:08:53
【问题描述】:
我正试图围绕 Javascript 继承问题并想检查我的理解是否正确。当我像这样在 JS 中声明 Javascript 函数时:
function Animal() {
}
现在第一个问题:
我声明
Function对象。这与例如没有什么不同。ArrayJS 自带的。Array也是 JS 原生提供的Function对象是吗?Object和RegExp和其他人也是如此吗?对吗?说这个对象继承自
Function是不正确的,但有人可以向我解释为什么吗?这是因为没有像 Java 和其他语言那样使用正式的类吗?还是因为Animal采用实际现有对象的属性,而不是该类在其他语言中的蓝图?还有其他原因吗?
非常感谢您对上述内容的澄清,干杯,
编辑:我的问题似乎造成了混乱,所以我应该澄清一下。
在第 1 点中,我不是在问 Array 返回什么。我只是想确认我的理解,函数Animal 和Array 的共同点是它们的[[Prototype]] 属性引用相同的Function.prototype,因此它们都是Function 对象。如果我理解正确,Animal 与 Array 不同,但原因 Animal.prototype 和 Array.prototype 显然不同。
在第 2 点中,我正在寻找解释为什么说 Animal 从 Function “继承” 是不正确的。
我希望这更有意义,谢谢大家
【问题讨论】:
-
blog.javascriptroom.com/2013/01/14/… 可能是一篇有用的文章。
-
它是
Function的一个实例。语言为您的函数创建一种新类型的对象是没有意义的,因为它可能会产生开销并且比作为一个实例更有意义。
标签: javascript inheritance prototypal-inheritance