为什么我必须在类中使用foo()而不是函数foo()?
class car {
move() {
console.log("move")
}
}
let a = new car()
a.move()
function move() {
console.log("move")
}
move()
答案 0 :(得分:8)
因为这就是class
语法的设计方式。那些是方法声明,而不是函数声明(方法是函数,但是可以访问super
,并且它们是作为其[[HomeObject]]的一部分创建的对象的牢不可破的链接) 。虽然可以设计语法来要求function
关键字,但它本来是冗长的,不必要的,并且可以说具有误导性;所以TC39(推动JavaScript前进的委员会)决定不再包含它。
附注:你也可以在对象初始化器中使用方法语法,但与class
主体不同,它与任何其他属性声明一样,你必须用逗号将其与其他属性分开:
const o = {
foo() {
// ...
}, // <=== Note the comma
bar() {
// ...
}
};
而这些逗号在类体中会出现语法错误,如下所示:
class Example {
foo() {
// ...
}
bar() {
// ...
}
}