Baseline Widely available *
static
ãã¼ã¯ã¼ãã¯ãã¯ã©ã¹ã«éçã¡ã½ãããéçããããã£ãå®ç¾©ãã¾ããéçã¡ã½ãããéçããããã£ãã¯ã©ã¹ã®ã¤ã³ã¹ã¿ã³ã¹ããã¯å¼ã³åºããã¾ããããã®ä»£ããã«ãã¯ã©ã¹ãã®ãã®ããå¼ã³åºããã¾ããéçã¡ã½ããã¯å¤ãã®å ´åããªãã¸ã§ã¯ãã®çæãè¤è£½ãè¡ã颿°ãªã©ã®ã¦ã¼ãã£ãªãã£é¢æ°ã§ããéçããããã£ã¯ãã£ãã·ã¥ãåºå®çãªæ§æããã®ä»ã®åã¤ã³ã¹ã¿ã³ã¹ã«è¤è£½ããå¿
è¦ã®ãªããã¼ã¿ã§ãã
éçã¡ã½ããã¯å¤ãã®å ´åããªãã¸ã§ã¯ãã®çæãè¤è£½ãè¡ã颿°ãªã©ã®ã¦ã¼ãã£ãªãã£é¢æ°ã§ããéçããããã£ã¯ãã£ãã·ã¥ãåºå®çãªæ§æããã®ä»ã®åã¤ã³ã¹ã¿ã³ã¹ã«è¤è£½ããå¿ è¦ã®ãªããã¼ã¿ã§ãã
ã¡ã¢: ã¯ã©ã¹ã®æèã«ããã¦ã MDN Web Docs ã®ã³ã³ãã³ãã§ã¯ããããã£ã¨ãã£ã¼ã«ãã¨ããç¨èªãåçã®ãã®ã¨ãã¦ä½¿ç¨ãã¦ãã¾ãã
試ãã¦ã¿ã¾ãããclass ClassWithStaticMethod {
static staticProperty = "someValue";
static staticMethod() {
return "static method has been called.";
}
static {
console.log("Class static initialization block called");
}
}
console.log(ClassWithStaticMethod.staticProperty);
// Expected output: "someValue"
console.log(ClassWithStaticMethod.staticMethod());
// Expected output: "static method has been called."
æ§æ
class ClassWithStatic {
static staticField;
static staticFieldWithInitializer = value;
static staticMethod() {
// â¦
}
}
ãã以å¤ã«ãæ§æä¸ã®å¶ç´ãããã¾ãã
prototype
ã¨ãããã¨ã¯ã§ãã¾ãããconstructor
ã¨ãããã¨ã¯ã§ãã¾ããããã®ãã¼ã¸ã§ã¯ãéçã¡ã½ãããéçã¢ã¯ã»ãµãéçãã£ã¼ã«ããå«ããã¯ã©ã¹ã®ãããªãã¯éçããããã£ãç´¹ä»ãã¾ãã
ãããªãã¯éçæ©è½ã¯ãstatic
ãã¼ã¯ã¼ãã使ç¨ãã¦å®£è¨ãã¾ãããããã¯ã¯ã©ã¹è©ä¾¡æã«ã [[DefineOwnProperty]]
ã®æå³ã¥ãï¼ããã¯æ¬è³ªçã« Object.defineProperty()
ã§ãï¼ã使ç¨ãã¦ãã¯ã©ã¹ã®ã³ã³ã¹ãã©ã¯ã¿ã¼ã«è¿½å ããã¾ãããããã¯ãã³ã³ã¹ãã©ã¯ã¿ã¼ããåã³ã¢ã¯ã»ã¹ãã¾ãã
éçã¡ã½ããã®å¤ãã¯ãã¤ã³ã¹ã¿ã³ã¹ã使ãããè¤è£½ããããããªã©ã®ãã¦ã¼ãã£ãªãã£é¢æ°ã§ãããããªãã¯éçãã£ã¼ã«ãã¯ã使ãããã¹ã¦ã®ã¯ã©ã¹ã¤ã³ã¹ã¿ã³ã¹ã§ã¯ãªããã¯ã©ã¹ãã¨ã«ä¸ã¤ã ããã£ã¼ã«ããåå¨ããããå ´åã«æçã§ããããã¯ããã£ãã·ã¥ãåºå®ã®æ§æå¤ã ãããã¯ã¤ã³ã¹ã¿ã³ã¹ãã¾ããã£ã¦è¤è£½ããå¿ è¦ã®ãªããã¼ã¿ãªã©ã«æçã§ãã
éçãã£ã¼ã«ãåã¯è¨ç®ã§ãã¾ããè¨ç®å¼ã® this
å¤ã¯ã¯ã©ã¹å®ç¾©ã®å¨å²ã® this
ã§ãããã¯ã©ã¹åãåç
§ããã¨ãã¯ã©ã¹ãã¾ã åæåããã¦ããªããã ReferenceError
ã«ãªãã¾ãããã®å¼ã§ã¯ await
㨠yield
ã¯æå¾
ã©ããã«åä½ãã¾ãã
éçãã£ã¼ã«ãã¯åæååãæã¤ãã¨ãã§ãã¾ããåæååãæããªãéçãã£ã¼ã«ã㯠undefined
ã«åæåããã¾ãããããªãã¯éçãã£ã¼ã«ãã¯ãµãã¯ã©ã¹ã§ã¯ååæåããã¾ãããããããã¿ã¤ããã§ã¼ã³çµç±ã§ã¢ã¯ã»ã¹ãããã¨ãã§ãã¾ãã
class ClassWithStaticField {
static staticField;
static staticFieldWithInitializer = "éçãã£ã¼ã«ã";
}
class SubclassWithStaticField extends ClassWithStaticField {
static subStaticField = "ãµãã¯ã©ã¹ã®ãã£ã¼ã«ã";
}
console.log(Object.hasOwn(ClassWithStaticField, "staticField")); // true
console.log(ClassWithStaticField.staticField); // undefined
console.log(ClassWithStaticField.staticFieldWithInitializer); // "éçãã£ã¼ã«ã"
console.log(SubclassWithStaticField.staticFieldWithInitializer); // "éçãã£ã¼ã«ã"
console.log(SubclassWithStaticField.subStaticField); // "ãµãã¯ã©ã¹ã®ãã£ã¼ã«ã"
ãã£ã¼ã«ãåæååã§ã¯ã this
ã¯ç¾å¨ã®ã¯ã©ã¹ï¼ãã®ååãããã¢ã¯ã»ã¹ãããã¨ãã§ãã¾ãï¼ãåç
§ãã super
ã¯åºåºã¯ã©ã¹ã®ã³ã³ã¹ãã©ã¯ã¿ã¼ãåç
§ãã¾ãã
class ClassWithStaticField {
static baseStaticField = "åºåºã¯ã©ã¹ã®éçãã£ã¼ã«ã";
static anotherBaseStaticField = this.baseStaticField;
static baseStaticMethod() {
return "åºåºã¯ã©ã¹ã®éçãã£ã¼ã«ãã®åºå";
}
}
class SubClassWithStaticField extends ClassWithStaticField {
static subStaticField = super.baseStaticMethod();
}
console.log(ClassWithStaticField.anotherBaseStaticField); // "åºåºã¯ã©ã¹ã®éçãã£ã¼ã«ã"
console.log(SubClassWithStaticField.subStaticField); // "åºåºã¯ã©ã¹ã®éçãã£ã¼ã«ãã®"
å¼ã¯åæçã«è©ä¾¡ããã¾ããåæååå¼ã§ï¼await
ã yield
ï¼ã使ç¨ãããã¨ã¯ã§ãã¾ãããï¼åæååå¼ã¯æé»ã«é¢æ°ã«å
ã¾ãã¦ããã¨èãã¦ãã ããï¼ã
éçãã£ã¼ã«ãåæååã¨éçåæåãããã¯ã¯ã 1 ã¤ãã¤è©ä¾¡ããã¾ãããã£ã¼ã«ãåæååã¯ãããããä¸ã®ãã£ã¼ã«ãå¤ãåç §ãããã¨ã¯ã§ãã¾ãããããããä¸ã®ãã£ã¼ã«ãå¤ãåç §ãããã¨ã¯ã§ãã¾ãããéçã¡ã½ããã¯ãã¹ã¦äºåã«è¿½å ãããã¢ã¯ã»ã¹ãããã¨ãã§ãã¾ãããåæåããããã£ã¼ã«ãããä¸ã®ãã£ã¼ã«ããåç §ãã¦ããå ´åãå¼ã³åºãã¨æå¾ ããåä½ãããªããã¨ãããã¾ãã
ã¡ã¢: ããã¯ãã©ã¤ãã¼ãéçãã£ã¼ã«ãã§ã¯ããéè¦ã§ããåæåããã¦ããªããã©ã¤ãã¼ããã£ã¼ã«ãã«ã¢ã¯ã»ã¹ããã¨ããã¨ããã®ãã©ã¤ãã¼ããã£ã¼ã«ããä¸ã§å®£è¨ããã¦ããã¨ãã¦ãã TypeError
ãçºçããããã§ããï¼ãã©ã¤ãã¼ããã£ã¼ã«ãã宣è¨ããã¦ããªãå ´åã¯ãæ©æã« SyntaxError
ã¨ãªãã¾ããï¼
次ã®ä¾ã¯ããã¤ãã®ãã¨ã説æãã¦ãã¾ãã
class Triple {
static customName = "Tripler";
static description = "I triple any number you provide";
static calculate(n = 1) {
return n * 3;
}
}
class SquaredTriple extends Triple {
static longDescription;
static description = "I square the triple of any number you provide";
static calculate(n) {
return super.calculate(n) * super.calculate(n);
}
}
console.log(Triple.description); // 'I triple any number you provide'
console.log(Triple.calculate()); // 3
console.log(Triple.calculate(6)); // 18
const tp = new Triple();
console.log(SquaredTriple.calculate(3)); // 81 (not affected by parent's instantiation)
console.log(SquaredTriple.description); // 'I square the triple of any number you provide'
console.log(SquaredTriple.longDescription); // undefined
console.log(SquaredTriple.customName); // 'Tripler'
// This throws because calculate() is a static member, not an instance member.
console.log(tp.calculate()); // 'tp.calculate is not a function'
éçã¡ã³ãã¼ã®å¥ãªéçã¡ã½ããããã®å¼ã³åºã
åãã¯ã©ã¹å
ã®éçã¡ã½ããã¾ãã¯ããããã£ãéçã¡ã½ããããå¼ã³åºãã«ã¯ã this
ãã¼ã¯ã¼ãã使ãã¾ãã
class StaticMethodCall {
static staticProperty = "static property";
static staticMethod() {
return "Static method and " + this.staticProperty + " has been called";
}
static anotherStaticMethod() {
return this.staticMethod() + " from another static method";
}
}
StaticMethodCall.staticMethod();
// 'Static method and static property has been called'
StaticMethodCall.anotherStaticMethod();
// 'Static method and static property has been called from another static method'
ã¯ã©ã¹ã®ã³ã³ã¹ãã©ã¯ã¿ã¼ãä»ã®ã¡ã½ããããã®éçã¡ã½ããã®å¼ã³åºã
éçã¡ã½ããã¯éçã§ã¯ãªãã¡ã½ããã® this
ãã¼ã¯ã¼ãã使ç¨ãã¦ç´æ¥ã¢ã¯ã»ã¹ãããã¨ãã§ãã¾ãããå¼ã³åºãã«ã¯ã¯ã©ã¹åã使ç¨ã㦠ã¯ã©ã¹å.éçã¡ã½ããå()
/ ã¯ã©ã¹å.éçããããã£å
ã®ããã«ãããã constructor
ããããã£ã®ã¡ã½ããã¨ã㦠this.constructor.éçã¡ã½ããå()
/ this.constructor.éçããããã£å
ã®ããã«ãã¦ãã ããã
class StaticMethodCall {
constructor() {
console.log(StaticMethodCall.staticProperty); // 'static property'
console.log(this.constructor.staticProperty); // 'static property'
console.log(StaticMethodCall.staticMethod()); // 'static method has been called.'
console.log(this.constructor.staticMethod()); // 'static method has been called.'
}
static staticProperty = "static property";
static staticMethod() {
return "static method has been called.";
}
}
仿§æ¸ ãã©ã¦ã¶ã¼ã®äºææ§ é¢é£æ
å ±
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