ã³ã³ã¹ãã©ã¯ã¿ã¼ã使ç¨ããã¨ãã¤ã³ã¹ã¿ã³ã¹åããããªãã¸ã§ã¯ãã«å¯¾ãã¦ãä»ã®ã¡ã½ãããå¼ã³åºãåã«è¡ãå¿ è¦ã®ããç¬èªã®åæåãè¡ããã¨ãã§ãã¾ãã
class Person {
constructor(name) {
this.name = name;
}
introduce() {
console.log(`ããã«ã¡ã¯ãç§ã¯${this.name}ã§ãã`);
}
}
const otto = new Person("ãªããã¼");
otto.introduce(); // ããã«ã¡ã¯ãç§ã¯ãªããã¼ã§ãã
ç¬èªã®ã³ã³ã¹ãã©ã¯ã¿ã¼ãæä¾ããªãã£ãå ´åã¯ãæ¢å®ã®ã³ã³ã¹ãã©ã¯ã¿ã¼ãæä¾ããã¾ããã¯ã©ã¹ãåºåºã¯ã©ã¹ã§ããå ´åãæ¢å®ã®ã³ã³ã¹ãã©ã¯ã¿ã¼ã¯ç©ºã§ãã
ã¯ã©ã¹ãæ´¾çã¯ã©ã¹ã®å ´åãæ¢å®ã®ã³ã³ã¹ãã©ã¯ã¿ã¼ã親ã³ã³ã¹ãã©ã¯ã¿ã¼ãå¼ã³åºããä¸ãããã弿°ã渡ãã¾ãã
constructor(...args) {
super(...args);
}
ã¡ã¢: ä¸è¨ã®ãããªæç¤ºçãªã³ã³ã¹ãã©ã¯ã¿ã¼ã¨æ¢å®ã®ã³ã³ã¹ãã©ã¯ã¿ã¼ã®ç°ãªãç¹ã¯ãå¾è ãå®éã«ã¯é åã¤ãã¬ã¼ã¿ã¼ãå¼ã³åºãã¦å¼æ°ã®ã¹ãã¬ãããè¡ããªããã¨ã§ãã
ããããã®ãããªã³ã¼ããåä½ããããã¨ãã§ãã¾ãã
class ValidationError extends Error {
printCustomerMessage() {
return `Validation failed :-( (details: ${this.message})`;
}
}
try {
throw new ValidationError("Not a valid phone number");
} catch (error) {
if (error instanceof ValidationError) {
console.log(error.name); // ãã㯠ValidationError ã®ä»£ããã®ã¨ã©ã¼
console.log(error.printCustomerMessage());
} else {
console.log("Unknown error", error);
throw error;
}
}
ValidationError
ã¯ã©ã¹ã¯ãç¬èªã®åæåãè¡ãå¿
è¦ããªããããæç¤ºçãªã³ã³ã¹ãã©ã¯ã¿ã¼ã¯å¿
è¦ããã¾ããã æ¢å®ã®ã³ã³ã¹ãã©ã¯ã¿ã¼ã¯ãä¸ãããã弿°ãã親㮠Error
ã®åæåãè¡ãã¾ãã
ãã ããç¬èªã®ã³ã³ã¹ãã©ã¯ã¿ã¼ãæä¾ããã¯ã©ã¹ã親ã¯ã©ã¹ããæ´¾çãã¦ããå ´åã¯ã super()
ã使ç¨ãã¦è¦ªã¯ã©ã¹ã®ã³ã³ã¹ãã©ã¯ã¿ã¼ãæç¤ºçã«å¼ã³åºãå¿
è¦ãããã¾ãã ä¾ãã°ã以ä¸ã®ããã«ãªãã¾ãã
class ValidationError extends Error {
constructor(message) {
super(message); // 親ã¯ã©ã¹ã®ã³ã³ã¹ãã©ã¯ã¿ã¼ã®å¼ã³åºã
this.name = "ValidationError";
this.code = "42";
}
printCustomerMessage() {
return `æ¤è¨¼ã«å¤±æãã¾ãã :-( (details: ${this.message}, code: ${this.code})`;
}
}
try {
throw new ValidationError("æ£ããé»è©±çªå·ã§ã¯ããã¾ããã");
} catch (error) {
if (error instanceof ValidationError) {
console.log(error.name); // ãã㯠ValidationError ã«ãªã
console.log(error.printCustomerMessage());
} else {
console.log("æªç¥ã®ã¨ã©ã¼ã§ã", error);
throw error;
}
}
ã¯ã©ã¹ã§ new
ã使ç¨ããã¨ã以ä¸ã®æ®µéãè¸ã¿ã¾ãã
super()
å¼ã³åºããè©ä¾¡ãããåã® constructor
æ¬ä½ããã®é¨åã¯ã¾ã åæåããã¦ããªãã®ã§ã this
ã«ã¢ã¯ã»ã¹ãã¦ã¯ããã¾ãããsuper()
å¼ã³åºããè©ä¾¡ãããåãå¦çã§è¦ªã¯ã©ã¹ãåæåããã¾ããsuper()
å¼ã³åºãå¾ã® constructor
æ¬ä½ï¼åºåºã¯ã©ã¹ã®å ´åã¯æ¬ä½å
¨ä½ï¼ãè©ä¾¡ããã¾ããconstructor
æ¬ä½ã®ä¸ã§ã¯ã this
ã§ä½æããããªãã¸ã§ã¯ãã«ã¢ã¯ã»ã¹ããã new
ã§å¼ã³åºãããã¯ã©ã¹ã« new.target
ã§ã¢ã¯ã»ã¹ããããããã¨ãã§ãã¾ããã¡ã½ããï¼ã²ãã¿ã¼ãã»ãã¿ã¼ãå«ãï¼ã¨ãããã¿ã¤ããã§ã¼ã³ 㯠constructor
ãå®è¡ãããåã« this
ã§åæåããã¦ããã®ã§ãã¹ã¼ãã¼ã¯ã©ã¹ã®ã³ã³ã¹ãã©ã¯ã¿ã¼ãããµãã¯ã©ã¹ã®ã¡ã½ããã«ã¢ã¯ã»ã¹ãããã¨ãã§ãããã¨ã«æ³¨æãã¦ãã ããããããããããã®ã¡ã½ããã this
ã使ç¨ãã¦ããå ´åã this
ã¯ã¾ã å®å
¨ã«åæåããã¦ãã¾ãããããã¯ãæ´¾çã¯ã©ã¹ã®ãããªãã¯ãã£ã¼ã«ããèªã㨠undefined
ã«ãªãããã©ã¤ãã¼ããã£ã¼ã«ããèªã㨠TypeError
ã«ãªãã¨ãããã¨ã§ãã
new (class C extends class B {
constructor() {
console.log(this.foo());
}
} {
#a = 1;
foo() {
return this.#a; // TypeError: Cannot read private member #a from an object whose class did not declare it
// ããã¯ãã¯ã©ã¹ã宣è¨ãã¦ããªãã®ã§ã¯ãªããã¹ã¼ãã¼ã¯ã©ã¹ã®
// ã³ã³ã¹ãã©ã¯ã¿ã¼ãå®è¡ããã¦ããæç¹ã§ããã©ã¤ãã¼ããã£ã¼ã«ãã
// ã¾ã åæåããã¦ããªãããã
}
})();
constructor
ã¡ã½ããã¯è¿å¤ãæã¤ãã¨ãã§ãã¾ããåºåºã¯ã©ã¹ã¯ã³ã³ã¹ãã©ã¯ã¿ã¼ããä½ããã®å¤ãè¿ããã¨ãã§ãã¾ãããæ´¾çã¯ã©ã¹ã¯ãªãã¸ã§ã¯ãã¾ã㯠undefined
ãè¿ããã TypeError
ãçºçãããªããã°ãªãã¾ããã
class ParentClass {
constructor() {
return 1;
}
}
console.log(new ParentClass()); // ParentClass {}
// è¿å¤ã¯ãªãã¸ã§ã¯ãã§ã¯ãªãã®ã§ç¡è¦ãããã ããã¯ã³ã³ã¹ãã©ã¯ã¿ã¼é¢æ°ã¨åãã
class ChildClass extends ParentClass {
constructor() {
return 1;
}
}
console.log(new ChildClass()); // TypeError: Derived constructors may only return object or undefined
親ã¯ã©ã¹ã®ã³ã³ã¹ãã©ã¯ã¿ã¼ããªãã¸ã§ã¯ããè¿ããå ´åããã®ãªãã¸ã§ã¯ãã¯æ´¾çã¯ã©ã¹ã®ã¯ã©ã¹ãã£ã¼ã«ããå®ç¾©ããéã®å¤ã¨ãã¦ä½¿ç¨ãã¾ãããã®ããªãã¯ã¯ãè¿å¤ã®ä¸æ¸ããã¨å¼ã°ããæ´¾çã¯ã©ã¹ã®ãã£ã¼ã«ãï¼ãã©ã¤ãã¼ããªãã®ãå«ãï¼ãç¡é¢ä¿ãªãªãã¸ã§ã¯ãã«å®ç¾©ãããã¨ãã§ãã¾ãã
constructor
ã¯é常ã®ã¡ã½ããæ§æã«å¾ãã®ã§ãããã©ã«ã弿°ãæ®ä½å¼æ°ãªã©ããã¹ã¦ä½¿ç¨ãããã¨ãã§ãã¾ãã
class Person {
constructor(name = "åç¡ã") {
this.name = name;
}
introduce() {
console.log(`ããã«ã¡ã¯ãç§ã¯${this.name}`);
}
}
const person = new Person();
person.introduce(); // ããã«ã¡ã¯ãç§ã¯åç¡ã
ã³ã³ã¹ãã©ã¯ã¿ã¼ã¯ãªãã©ã«åã§ãªããã°ãªãã¾ãããè¨ç®ããããã£åã¯ã³ã³ã¹ãã©ã¯ã¿ã¼ã«ã¯ãªãã¾ããã
class Foo {
// ããã¯è¨ç®ããããã£åã§ããã³ã³ã¹ãã©ã¯ã¿ã¼ã¨ãã¦ããã¯ã¢ããããããã¨ã¯ããã¾ããã
["constructor"]() {
console.log("called");
this.a = 1;
}
}
const foo = new Foo(); // ãã°åºåãªã
console.log(foo); // Foo {}
foo.constructor(); // "called" ã¨åºå
console.log(foo); // Foo { a: 1 }
éåæã¡ã½ãããã¸ã§ãã¬ã¼ã¿ã¼ã¡ã½ãããã¢ã¯ã»ãµãã¯ã©ã¹ãã£ã¼ã«ã㯠constructor
ã¨åä»ãããã¨ã¯ç¦æ¢ããã¦ãã¾ãããã©ã¤ãã¼ããªååã #constructor
ã¨å¼ã³åºããã¨ã¯ã§ãã¾ããã constructor
ã¨ããååã®ã¡ã³ãã¼ã¯ãã¬ã¼ã³ãªã¡ã½ããã§ãªããã°ãªãã¾ããã
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4