ãã®ãã¼ã¸ã§ã¯ããããªãã¯ã¤ã³ã¹ã¿ã³ã¹ãã£ã¼ã«ãã«ã¤ãã¦è©³ããç´¹ä»ãã¾ãã
static
ãåç
§ãã¦ãã ããããããªãã¯ã¤ã³ã¹ã¿ã³ã¹ãã£ã¼ã«ãã¯ã使ãããã¯ã©ã¹ã®ãã¹ã¦ã®ã¤ã³ã¹ã¿ã³ã¹ã«åå¨ãã¾ãããããªãã¯ãã£ã¼ã«ãã宣è¨ãããã¨ã§ããã®ãã£ã¼ã«ãã常ã«åå¨ãããã¨ãä¿è¨¼ãããã¨ãã§ããã¯ã©ã¹ã®å®ç¾©ãããèªå·±ææ¸åããã¾ãã
ãããªãã¯ã¤ã³ã¹ã¿ã³ã¹ãã£ã¼ã«ãã¯ãåºåºã¯ã©ã¹ã§ã¯ã³ã³ã¹ãã©ã¯ã¿ã¼ãå®è¡ãããåã®æç¹ã§ã¤ã³ã¹ã¿ã³ã¹ã«è¿½å ããããµãã¯ã©ã¹ã§ã¯ super()
ãè¿ãããç´å¾ã«è¿½å ããã¾ããåæååã®ãªããã£ã¼ã«ã㯠undefined
ã«åæåããã¾ããããããã£ã¨åæ§ã«ããã£ã¼ã«ãåã¯è¨ç®ãããã¨ãã§ãã¾ãã
const PREFIX = "prefix";
class ClassWithField {
field;
fieldWithInitializer = "instance field";
[`${PREFIX}Field`] = "prefixed field";
}
const instance = new ClassWithField();
console.log(Object.hasOwn(instance, "field")); // true
console.log(instance.field); // undefined
console.log(instance.fieldWithInitializer); // "instance field"
console.log(instance.prefixField); // "prefixed field"
è¨ç®ããããã£ã¼ã«ãåã¯ãã¯ã©ã¹å®ç¾©æç¹ã§ä¸åº¦ã ãè©ä¾¡ããã¾ããããã¯ãã¯ã©ã¹ãã¨ã«å¸¸ã«åºå®ãããä¸é£ã®ãã£ã¼ã«ãåãæã¤ãã¨ãæå³ãã¦ããã2ã¤ã®ã¤ã³ã¹ã¿ã³ã¹ãè¨ç®ãããååã«ãã£ã¦ç°ãªããã£ã¼ã«ãåãæã¤ãã¨ã¯ããã¾ãããè¨ç®å¼ã® this
å¤ã¯ã¯ã©ã¹å®ç¾©ãå²ã this
ã§ãããã¯ã©ã¹åãåç
§ãããã¨ã¯ ReferenceError
ã¨ãªãã¾ãããã®å¼ã§ã¯ await
㨠yield
ã¯æå¾
éãã«åä½ãã¾ãã
class C {
[Math.random()] = 1;
}
console.log(new C());
console.log(new C());
// Both instances have the same field name
ãã£ã¼ã«ãåæååã®ä¸ã§ã¯ãthis
ã¯ä½æä¸ã®ã¯ã©ã¹ã¤ã³ã¹ã¿ã³ã¹ãåç
§ããsuper
ã¯åºåºã¯ã©ã¹ã® prototype
ããããã£ãåç
§ãã¾ãããã®ããããã£ã«ã¯åºåºã¯ã©ã¹ã®ã¤ã³ã¹ã¿ã³ã¹ã¡ã½ãããæ ¼ç´ããã¦ãã¾ãããã¤ã³ã¹ã¿ã³ã¹ãã£ã¼ã«ãã¯æ ¼ç´ããã¦ãã¾ããã
class Base {
baseField = "base field";
anotherBaseField = this.baseField;
baseMethod() {
return "base method output";
}
}
class Derived extends Base {
subField = super.baseMethod();
}
const base = new Base();
const sub = new Derived();
console.log(base.anotherBaseField); // "base field"
console.log(sub.subField); // "base method output"
ãã£ã¼ã«ãã®åæåå¼ã¯ãæ°ããã¤ã³ã¹ã¿ã³ã¹ã使ããããã³ã«è©ä¾¡ããã¾ããï¼this
ã®å¤ã¯ã¤ã³ã¹ã¿ã³ã¹ãã¨ã«ç°ãªãã®ã§ãåæåå¼ã¯ã¤ã³ã¹ã¿ã³ã¹åºæã®ããããã£ã«ã¢ã¯ã»ã¹ãããã¨ãã§ãã¾ããï¼
class C {
obj = {};
}
const instance1 = new C();
const instance2 = new C();
console.log(instance1.obj === instance2.obj); // false
å¼ã¯åæçã«è©ä¾¡ããã¾ããåæåå¼ã§ await
ã yield
ã使ç¨ãããã¨ã¯ã§ãã¾ãããï¼åæåå¼ã¯æé»çã«é¢æ°ã«å
ã¾ãã¦ããã¨èãã¦ãã ãããï¼
ã¯ã©ã¹ã®ã¤ã³ã¹ã¿ã³ã¹ãã£ã¼ã«ãã¯ãããããã®ã³ã³ã¹ãã©ã¯ã¿ã¼ãå®è¡ãããåã«è¿½å ãããã®ã§ãã³ã³ã¹ãã©ã¯ã¿ã¼å
ã§ãã£ã¼ã«ãã®å¤ã«ã¢ã¯ã»ã¹ãããã¨ãã§ãã¾ããããããæ´¾çã¯ã©ã¹ã®ã¤ã³ã¹ã¿ã³ã¹ãã£ã¼ã«ã㯠super()
ãè¿ããå¾ã«å®ç¾©ãããã®ã§ãåºåºã¯ã©ã¹ã®ã³ã³ã¹ãã©ã¯ã¿ã¼ãæ´¾çã¯ã©ã¹ã®ãã£ã¼ã«ãã«ã¢ã¯ã»ã¹ãããã¨ã¯ã§ãã¾ããã
class Base {
constructor() {
console.log("Base constructor:", this.field);
}
}
class Derived extends Base {
field = 1;
constructor() {
super();
console.log("Derived constructor:", this.field);
this.field = 2;
}
}
const instance = new Derived();
// Base constructor: undefined
// Derived constructor: 1
console.log(instance.field); // 2
ãã£ã¼ã«ã㯠1 ã¤ãã¤è¿½å ããã¾ãããã£ã¼ã«ãåæååã¯ãã®ä¸ã®ãã£ã¼ã«ãã®å¤ãåç §ãããã¨ã¯ã§ãã¾ããããã®ä¸ã®ãã£ã¼ã«ãã®å¤ãåç §ãããã¨ã¯ã§ãã¾ãããã¤ã³ã¹ã¿ã³ã¹ã¡ã½ããã¨éçã¡ã½ããã¯ãã¹ã¦äºåã«è¿½å ãããã¢ã¯ã»ã¹ãããã¨ãã§ãã¾ãããåæåããã¦ãããã£ã¼ã«ãããä¸ã®ãã£ã¼ã«ããåç §ãã¦ããå ´åãå¼ã³åºãã¨æå¾ ããåä½ãããªããã¨ãããã¾ãã
class C {
a = 1;
b = this.c;
c = this.a + 1;
d = this.c + 1;
}
const instance = new C();
console.log(instance.d); // 3
console.log(instance.b); // undefined
ã¡ã¢: ããã¯ãã©ã¤ãã¼ããã£ã¼ã«ãã§ã¯ããéè¦ã§ããåæåããã¦ããªããã©ã¤ãã¼ããã£ã¼ã«ãã«ã¢ã¯ã»ã¹ããã¨ããã¨ããã©ã¤ãã¼ããã£ã¼ã«ããä¸è¨ã§å®£è¨ããã¦ãã¦ã TypeError
ãçºçããããã§ããï¼ãã©ã¤ãã¼ããã£ã¼ã«ãã宣è¨ããã¦ããªãå ´åã¯ãæ©æã« SyntaxError
ã¨ãªãã¾ããï¼
ã¯ã©ã¹ãã£ã¼ã«ã㯠[[DefineOwnProperty]]
ã®æå³ã¥ãï¼æ¬è³ªçã«ã¯ Object.defineProperty()
ï¼ã使ç¨ãã¦è¿½å ããããããæ´¾çã¯ã©ã¹ã®ãã£ã¼ã«ã宣è¨ã¯åºåºã¯ã©ã¹ã®ã»ãã¿ã¼ãå¼ã³åºããã¨ã¯ããã¾ããããã®åä½ã¯ãã³ã³ã¹ãã©ã¯ã¿ã¼ã§ this.field = â¦
ã使ç¨ããã®ã¨ã¯ç°ãªãã¾ãã
class Base {
set field(val) {
console.log(val);
}
}
class DerivedWithField extends Base {
field = 1;
}
const instance = new DerivedWithField(); // No log
class DerivedWithConstructor extends Base {
constructor() {
super();
this.field = 1;
}
}
const instance2 = new DerivedWithConstructor(); // Logs 1
ã¡ã¢: ã¯ã©ã¹ãã£ã¼ã«ãã®ä»æ§ãæçµçã« [[DefineOwnProperty]]
ã®æå³ã¥ãã§æ±ºå®ããã以åã¯ã Babel ã tsc ãå«ãã»ã¨ãã©ã®ãã©ã³ã¹ãã¤ã©ã¼ã¯ã¯ã©ã¹ãã£ã¼ã«ãã DerivedWithConstructor
å½¢å¼ã«å¤æãã¦ãããã¯ã©ã¹ãã£ã¼ã«ããæ¨æºåãããå¾ã«å¾®å¦ãªãã°ãçºçãã¦ãã¾ããã
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