为什么 JavaScript 类 不被考虑 "real" 类? (与 Python、Java 等相比)
Why are JavaScript classes not considered "real" classes? (compared to Python, Java, etc.)
为什么 JavaScript classes 与基于 "standard" class 的语言(例如 [=21=)相比 "real" ]?我知道 JavaScript classes 在后台使用原型,但 Java 代码不会编译成 getfield
、invokevirtual
等执行动态查找也是如此?除了原型是可以在 运行 时间任意修改的常规对象并且您不能使用原型实现访问控制或多重继承之外,Java' classes与 Java脚本的根本不同?
因为Java脚本没有类;这是一个基于原型的 OOPL。
ES6 的语法糖 类 没有为 ES5 添加额外的功能。 类 在其原生 OOP 范例的 之上 实现:原型继承可以模仿经典继承,反之则不然(注意事项)。
您实际上可能是在问 this question 的副本,但(又一)注意事项根据所讨论的特定语言在不同程度上适用(例如,Ruby' s 类 和实例与 Java 有很大不同。)
访问控制和多重继承是正交的讨论,例如,Self 具有(优先)多重继承,您可以通过 metatables/metafunctions 在 Lua 中实现访问控制,等等
为什么 JavaScript classes 与基于 "standard" class 的语言(例如 [=21=)相比 "real" ]?我知道 JavaScript classes 在后台使用原型,但 Java 代码不会编译成 getfield
、invokevirtual
等执行动态查找也是如此?除了原型是可以在 运行 时间任意修改的常规对象并且您不能使用原型实现访问控制或多重继承之外,Java' classes与 Java脚本的根本不同?
因为Java脚本没有类;这是一个基于原型的 OOPL。
ES6 的语法糖 类 没有为 ES5 添加额外的功能。 类 在其原生 OOP 范例的 之上 实现:原型继承可以模仿经典继承,反之则不然(注意事项)。
您实际上可能是在问 this question 的副本,但(又一)注意事项根据所讨论的特定语言在不同程度上适用(例如,Ruby' s 类 和实例与 Java 有很大不同。)
访问控制和多重继承是正交的讨论,例如,Self 具有(优先)多重继承,您可以通过 metatables/metafunctions 在 Lua 中实现访问控制,等等