es6类无法做到的原型方法是什么?

时间:2019-03-06 12:07:33

标签: javascript ecmascript-6 prototype es6-class

有什么可以用经典/旧的原型方法实现的吗?

为什么需要这个:假设我正在编写一个JS子集,其中没有旧内容(原型代替类,var等)

1 个答案:

答案 0 :(得分:2)

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

  • 使用function表示法时,可以不使用new来调用构造函数。 class表示法禁止这样做。

    作为旁注:在子类化中通常使用MyParentClass.call(this)之类的东西(当MyParentClassclass定义时是不允许的),您现在可以将class语法和extendssuper关键字。

  • function声明可以在使用后出现,因为它们已吊起,class声明则没有。
  • function声明可以被新的声明覆盖,class声明不能重新定义早期的声明
  • 原型方法以旧样式定义时可以用作构造函数,而不是使用class语法定义时。
  • function声明可以在“草率”模式(不是严格的)下进行,而class方法始终在严格的模式下运行。因此,您不能使用caller表示法的方法/构造函数的calleeargumentsclass属性。严格模式的所有其他后果当然也适用。将其全部列出在这里太过分了。
  • 您可以将新对象分配给旧样式函数的prototype属性(可写)。使用class的{​​{1}}属性是不可写的(请注意,这并不意味着您不能对其进行 muting 更改)。