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