class
åºçº¿
广æ³å¯ç¨
èª 2017å¹´3æ èµ·ï¼æ¤ç¹æ§å·²å¨ä¸»æµæµè§å¨ä¸å¾å°æ¯æï¼å¯å¨å¤§å¤æ°è®¾å¤åæµè§å¨çæ¬ä¸æ£å¸¸ä½¿ç¨ã
class 声æå建ä¸ä¸ªç»å®å°ç»å®åç§°çæ°ç±»ã
ä½ ä¹å¯ä»¥ä½¿ç¨ class è¡¨è¾¾å¼æ¥å®ä¹ç±»ã
å°è¯ä¸ä¸
class Polygon {
constructor(height, width) {
this.area = height * width;
}
}
console.log(new Polygon(4, 3).area);
// Expected output: 12
è¯æ³
js
class name {
// ç±»ä½
}
class name extends otherName {
// ç±»ä½
}
æè¿°
类声æçç±»ä½å¨ä¸¥æ ¼æ¨¡å¼ä¸æ§è¡ãclass 声æä¸ let é常ç¸ä¼¼ï¼
class声æçä½ç¨åæ¢å¯ä»¥æ¯å级ä½ç¨åï¼ä¹å¯ä»¥æ¯å½æ°ä½ç¨åãclass声æåªè½å¨å ¶å£°æä½ç½®ä¹åæè½è®¿é®ï¼åè§ææ¶æ§æ»åºï¼ãå æ¤class声æé常被认为æ¯ä¸å¯åéæåçï¼ä¸å½æ°å£°æä¸åï¼ãclass声æå¨èæ¬é¡¶å±å£°ææ¶ä¸ä¼å¨globalThisä¸åå»ºå±æ§ï¼ä¸å½æ°å£°æä¸åï¼ã- å¨åä¸ä½ç¨åå
ï¼
class声æä¸è½è¢«ä»»ä½å ¶ä»å£°æéå¤å£°æã
å¨ç±»ä½å¤é¨ï¼class 声æå¯ä»¥å let 䏿 ·è¢«éæ°èµå¼ï¼ä½ä½ åºè¯¥é¿å
è¿æ ·åãå¨ç±»ä½å
é¨ï¼ç±»çç»å®æ¯å¸¸éï¼å°±å const 䏿 ·ã
js
class Foo {
static {
Foo = 1; // TypeError: Assignment to constant variable.
}
}
class Foo2 {
bar = (Foo2 = 1); // TypeError: Assignment to constant variable.
}
class Foo3 {}
Foo3 = 1;
console.log(Foo3); // 1
示ä¾
>ä¸ä¸ªç®åç类声æ
å¨ä»¥ä¸ç¤ºä¾ä¸ï¼æä»¬é¦å
å®ä¹äºä¸ä¸ªå为 Rectangle çç±»ï¼ç¶åæ©å±å®æ¥å建ä¸ä¸ªå为 FilledRectangle çç±»ã
请注æï¼super() åªè½å¨ constructor ä¸ä½¿ç¨ï¼å¹¶ä¸å¿
é¡»å¨ä½¿ç¨ this å
³é®åä¹åè°ç¨ã
js
class Rectangle {
constructor(height, width) {
this.name = "ç©å½¢";
this.height = height;
this.width = width;
}
}
class FilledRectangle extends Rectangle {
constructor(height, width, color) {
super(height, width);
this.name = "å¡«å
ç©å½¢";
this.color = color;
}
}
è§è
| è§è |
|---|
| ECMAScript® 2027 Language Specification> # sec-class-definitions> |