什么原型方法可以做到es6类不能?

问题描述 投票:0回答:1

有什么东西只能通过经典/旧的原型方法来实现吗?

为什么我需要这个:想象一下我正在写一个没有旧东西的JS子集(原型而不是类,var等)

javascript ecmascript-6 prototype es6-class
1个回答
2
投票

有几件事,包括但不限于:

  • 使用function表示法时,可以在没有new的情况下调用构造函数。 class符号禁止这一点。 作为旁注:在传统上使用MyParentClass.call(this)(当MyParentClassclass定义时不允许)进行子类化时,你现在可以将class语法与extendssuper关键字结合起来。
  • function声明可以在使用后出现,因为它们被悬挂,class声明不是。
  • function声明可以被新声明覆盖,class声明无法重新定义先前的声明
  • 当使用旧样式定义时,原型方法可以用作构造函数,而不是在使用class语法定义时。
  • function声明可以在“草率”模式(非严格)中进行,而class方法总是以严格模式运行。因此,您不能在caller表示法中使用方法/构造函数的calleeargumentsclass属性。当然,严格模式的所有其他后果也适用。在这里列出它们太过分了。
  • 您可以将新对象分配给旧式函数的prototype属性(它是可写的)。使用class时,prototype属性不可写(注意,这并不意味着你不能改变它)。
© www.soinside.com 2019 - 2024. All rights reserved.