为什么我必须在类中使用 foo() 而不是函数 foo()?
class car {
move() {
console.log("move")
}
}
let a = new car()
a.move()
function move() {
console.log("move")
}
move()
请您参考如下方法:
因为这就是 class
语法的设计方式。这些是方法声明,而不是函数声明(方法是函数,但可以访问super
,并且与它们创建的对象有牢不可破的链接,它们的[[HomeObject]] )。虽然可以将语法设计为需要 function
关键字,但它会很冗长、不必要,而且可能会产生误导;因此 TC39(插入 JavaScript 发展的委员会)决定不包含它。
旁注:您还可以在对象初始值设定项中使用方法语法,但与 class
主体不同,它与任何其他属性声明一样,您必须使用逗号将其与其他属性分隔开:
const o = {
foo() {
// ...
}, // <=== Note the comma
bar() {
// ...
}
};
而这些逗号在类主体中将是语法错误,如下所示:
class Example {
foo() {
// ...
}
bar() {
// ...
}
}