构造函数+原型如何与类不同?

时间:2016-05-13 16:33:17

标签: javascript prototype new-operator ecmascript-5 prototypal-inheritance

我一直听说JavaScript是如此优越的语言的原因之一是因为它没有类。相反,它有这个神奇的东西叫做Prototypal Inheritance。

纠正我如果我错了,但根据我的理解,Object.prototypeObject.prototype.constructor(运行一些本机代码)是Javascript中的两个基本实体。这与班级有什么不同?

当使用.prototype运算符调用时,如果没有用于创建对象的“蓝图”,每个函数都需要new

1 个答案:

答案 0 :(得分:0)

如果你挖掘得足够多,这个问题可以成为一个非常深入的讨论,但我能想到的最简单的比喻(广泛使用)就是想到一个"类"作为一个蓝图和一个"对象"作为一个房子。在基于类的系统中,您可以构建' (实例化)蓝图中的房屋。而且你可以活着#39; (在这些房子里呼叫方法等)。但你不能活着#39;在蓝图中。它们仅用于建造房屋。

在JS中,你没有蓝图。你只有房子。你可以复制房屋和“活着”。在它中,如果你愿意,可以使每个人不同(保存个人状态等)。但它们都是彼此的副本。没有涉及蓝图。