Skip to main content
 首页 » 编程设计

javascript之为什么我必须在类中使用 foo() 而不是函数 foo()

2024年02月27日17zhwl

为什么我必须在类中使用 foo() 而不是函数 foo()?

class car { 
  move() { 
    console.log("move") 
  } 
} 
let a = new car() 
a.move() 
 
function move() { 
  console.log("move") 
} 
move() 

JS FIDDLE

请您参考如下方法:

因为这就是 class 语法的设计方式。这些是方法声明,而不是函数声明(方法是函数,但可以访问super,并且与它们创建的对象有牢不可破的链接,它们的[[HomeObject]] )。虽然可以将语法设计为需要 function 关键字,但它会很冗长、不必要,而且可能会产生误导;因此 TC39(插入 JavaScript 发展的委员会)决定不包含它。

<小时 />

旁注:您还可以在对象初始值设定项中使用方法语法,但与 class 主体不同,它与任何其他属性声明一样,您必须使用逗号将其与其他属性分隔开:

const o = { 
    foo() { 
        // ... 
    },                // <=== Note the comma 
    bar() { 
        // ... 
    } 
}; 

而这些逗号在类主体中将是语法错误,如下所示:

class Example { 
    foo() { 
        // ... 
    } 
    bar() { 
        // ... 
    } 
}