在深度互联网中,我遇到像class A extends B with C { ... }
这样的结构,我现在没有链接,在扩展抽象类时,它就像类的宏。
这是标准的吗? (我用谷歌搜索,只找到现在删除的旧with
,chrome内联控制台抛出错误)
答案 0 :(得分:2)
这不是ECMAScript 6 Classes标准的一部分。 见https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes
with
关键字在某些编程语言中用于表示多重继承。
例如,Scala具有哪些类可以使用with
关键字
trait Drawable {
def draw() { }
}
trait Cowboy extends Drawable {
override def draw() { println("Bang!") }
}
trait Artist extends Drawable {
override def draw() { println("A pretty painting") }
}
class CowboyArtist extends Cowboy with Artist
答案 1 :(得分:2)
它不标准。从Annex A.4 - Functions and Classes开始,语法为
ClassDeclaration[Yield, Default] :
class BindingIdentifier[?Yield] ClassTail[?Yield]
[+Default] class ClassTail[?Yield]
ClassExpression[Yield] :
class BindingIdentifier[?Yield]opt ClassTail[?Yield]
ClassTail[Yield] :
ClassHeritage[?Yield]opt { ClassBody[?Yield]opt }
ClassHeritage[Yield] :
extends LeftHandSideExpression[?Yield]
所以 ClassTail 是包含可选extends something
和类主体的部分。并且something
必须是 LeftHandSideExpression ,其中没有任何with
。