【问题标题】:Why are JavaScript classes not considered "real" classes? (compared to Python, Java, etc.)为什么 JavaScript 类不被视为“真正的”类? (与 Python、Java 等相比)
【发布时间】:2020-06-01 16:58:57
【问题描述】:

与“标准”基于类的语言(如 Java)中的类相比,为什么 JavaScript 类被认为不是“真实的”?我知道 JavaScript 类在底层使用原型,但 Java 代码不会编译成getfieldinvokevirtual 等执行动态查找吗?除了原型是可以在运行时任意修改的常规对象并且您不能使用原型实现访问控制或多重继承这一事实之外,Java 的类与 JavaScript 的类有何根本不同?

【问题讨论】:

    标签: javascript java class oop prototypal-inheritance


    【解决方案1】:

    因为 JavaScript 没有类;这是一个基于原型的OOPL。

    ES6 类的语法糖不会为 ES5 添加额外的功能。类在其原生 OOP 范例之上实现:原型继承可以模仿经典继承,反之则不正确(需要注意)。

    您实际上可能会问this question 的副本,但(还有一个)需要注意的是,根据所讨论的特定语言,这些点在不同程度上适用(例如,Ruby 的类和实例与 Java 的有很大不同) .)

    访问控制和多重继承是正交的讨论,例如,Self 具有(优先)多重继承,您可以通过元表/元函数等在 Lua 中实现访问控制。

    【讨论】:

      猜你喜欢
      • 2019-09-19
      • 1970-01-01
      • 1970-01-01
      • 2015-05-10
      • 2017-08-15
      • 1970-01-01
      • 2013-01-25
      • 2019-10-25
      • 2011-02-11
      相关资源
      最近更新 更多