ReferenceError: must call super constructor before using 'this' in derived class constructor
JavaScript ã®ä¾å¤ "must call super constructor before using 'this' in derived class constructor" ã¯ãæ´¾çã¯ã©ã¹ã®ã³ã³ã¹ãã©ã¯ã¿ã¼ã§ super() ãå¼ã³åºãã¦ããªãç¶æ
ã§ãthis ã®å¤ã«ã¢ã¯ã»ã¹ãããã¨ããå ´åããæ´¾çã³ã³ã¹ãã©ã¯ã¿ã¼ããã§ã«çµäºãã¦ããããã®æ»ãå¤ããªãã¸ã§ã¯ãã§ãªãå ´åã«çºçãã¾ãã
ã¨ã©ã¼ã¡ãã»ã¼ã¸
ReferenceError: Must call super constructor in derived class before accessing 'this' or returning from derived constructor (V8-based) ReferenceError: must call super constructor before using 'this' in derived class constructor (Firefox) ReferenceError: 'super()' must be called in derived constructor before accessing |this| or returning non-object. (Safari)
ã¨ã©ã¼ã®ç¨®é¡
ReferenceError
ã¨ã©ã¼ã®åå
super() ã®å¼ã³åºãã¯ãæ´¾çã¯ã©ã¹ã®ã³ã³ã¹ãã©ã¯ã¿ã¼ã«å¯¾ãã new å¼ã³åºããã¨ã«æå¤§ 1 åããè¡ãã¾ãããå¤ãã®å ´åãã¡ããã© 1 åå¼ã³åºãå¿
è¦ãããã¾ãããªããªãããããå¼ã³åºããªãã¨è¦ªã¯ã©ã¹ã®ã³ã³ã¹ãã©ã¯ã¿ã¼ã this ãåæåã§ãããæ´¾çã³ã³ã¹ãã©ã¯ã¿ã¼å
ã§ this ã«ã¢ã¯ã»ã¹ã§ããªãããã§ãããã®ç¶æ
ã®ã¾ã¾æ´¾çã³ã³ã¹ãã©ã¯ã¿ã¼ãçµäºããã¨ãthis ã¯æ£ããæ§ç¯ããããªãã¸ã§ã¯ãã¨è¦ãªããããä¾å¤ãçºçãã¾ãããããåé¿ããæ¹æ³ã¨ãã¦ãæ´¾çã¯ã©ã¹ã®ã³ã³ã¹ãã©ã¯ã¿ã¼ãããªãã¸ã§ã¯ããè¿ããã¨ãæãããã¾ãããã®å ´åã this ã®ä»£ããã«è¿ããããªãã¸ã§ã¯ããæ§ç¯çµæã¨ãã¦ä½¿ç¨ããããããsuper() ãå¼ã³åºããªãã¦ãæ¸ã¿ã¾ãããã ãããã®æ¹æ³ã使ããããã¨ã¯ã»ã¨ãã©ããã¾ããã
ä¾
>ç¡å¹ãªã±ã¼ã¹
class Base {
constructor() {
this.x = 1;
}
}
class Derived extends Base {
constructor() {
console.log(this.x);
// ã¾ã Base ã³ã³ã¹ãã©ã¯ã¿ã¼ãå¼ã³åºããã¦ããªããããthis.x ã¯æªå®ç¾©
// ReferenceError: must call super constructor before using 'this' in derived class constructor
}
}
æå¹ãªå ´å
class Base {
constructor() {
this.x = 1;
}
}
class Derived extends Base {
constructor() {
super();
console.log(this.x); // 1
}
}