Baseline Widely available *
ã¯ã©ã¹ã¯ãªãã¸ã§ã¯ãã使ããããã®ãã³ãã¬ã¼ãã§ããå¦çããããã®ã³ã¼ãã§ãã¼ã¿ãã«ãã»ã«åãã¾ãã JS ã®ã¯ã©ã¹ã¯ãããã¿ã¤ãã«åºã¥ãã¦æ§ç¯ããã¦ãã¾ãããä¸é¨ã®æ§æãæå³ã¯ã¯ã©ã¹ã«åºæã§ãã
ä¾ã説æã«ã¤ãã¦ã¯ãã¯ã©ã¹ã®ä½¿ç¨ã¬ã¤ããåç §ãã¦ãã ããã
解説 ã¯ã©ã¹ã®å®ç¾©ã¯ã©ã¹ã¯å®éã«ã¯ãç¹å¥ãªé¢æ°ãã§ããã颿°å¼ã¨é¢æ°å®£è¨ãå®ç¾©ãããã¨ãã§ããããã«ãã¯ã©ã¹ãã¯ã©ã¹å¼ã¾ãã¯ã¯ã©ã¹å®£è¨ã® 2 ã¤ã®å®ç¾©æ¹æ³ãããã¾ãã
// 宣è¨
class Rectangle {
constructor(height, width) {
this.height = height;
this.width = width;
}
}
// å¼ï¼ã¯ã©ã¹ã¯ç¡åã ãã夿°ã«ä»£å
¥ãããï¼
const Rectangle = class {
constructor(height, width) {
this.height = height;
this.width = width;
}
};
// å¼ï¼èªåã®ååãæã¤ã¯ã©ã¹ï¼
const Rectangle = class Rectangle2 {
constructor(height, width) {
this.height = height;
this.width = width;
}
};
颿°å¼ã¨åæ§ã«ãã¯ã©ã¹å¼ãç¡åã§ãã£ãããå²ãå½ã¦ã夿°ã¨ã¯ç°ãªãååãæã£ãããããã¨ãã§ãã¾ãããããã颿°å®£è¨ã¨ã¯ç°ãªããã¯ã©ã¹å®£è¨ã¯ let
ã const
ã¨åã䏿çãªãããã¾ã¼ã³ã®å¶ç´ããããå·»ãä¸ãããã¦ããªããã®ããã«åä½ãã¾ãã
䏿¬å¼§ {}
å
ã«ã¯ã©ã¹æ¬ä½ãè¨è¿°ãã¾ããã¯ã©ã¹æ¬ä½ã«ã¯ãã¡ã½ãããã³ã³ã¹ãã©ã¯ã¿ã¼ã¨ãã£ãã¯ã©ã¹ã¡ã³ãã¼ãè¨è¿°ãã¾ãã
ã¯ã©ã¹æ¬ä½ã¯ "use strict"
ãã£ã¬ã¯ãã£ãããªãã¦ã峿 ¼ã¢ã¼ãã§å®è¡ããã¾ãã
ã¯ã©ã¹ã®è¦ç´ 㯠3 ã¤ã®å´é¢ã§ç¹å¾´ä»ãããã¾ãã
ããããåè¨ããã¨ã使ç¨å¯è½ãªçµã¿åããã¯16éãã«ãªãã¾ãããªãã¡ã¬ã³ã¹ãããè«ççã«åå²ããã³ã³ãã³ãã®éè¤ãé¿ãããããç°ãªãè¦ç´ ã¯ããããå¥ã®ãã¼ã¸ã§è©³ããç´¹ä»ãã¦ãã¾ãã
ãããªãã¯ã¤ã³ã¹ã¿ã³ã¹ã¡ã½ãã
ãããªãã¯ã¤ã³ã¹ã¿ã³ã¹ã²ãã¿ã¼
ãããªãã¯ã¤ã³ã¹ã¿ã³ã¹ã»ãã¿ã¼
ãããªãã¯ã¤ã³ã¹ã¿ã³ã¹ãã£ã¼ã«ã
static
ãããªãã¯éçã¡ã½ãããã²ãã¿ã¼ãã»ãã¿ã¼ããã£ã¼ã«ã
ãã©ã¤ãã¼ããªãã®ãã¹ã¦
ã¡ã¢: ãã©ã¤ãã¼ãè¦ç´ ã«ã¯ãåãã¯ã©ã¹ã§å®£è¨ããããããã£åã¯ãã¹ã¦åºæã®ãã®ã§ãªããã°ãªããªãã¨ããå¶ç´ãããã¾ããä»ã®ãã¹ã¦ã®ãããªãã¯ããããã£ã«ã¯ãã®å¶éã¯ãªããåãååã®è¤æ°ã®ãããªãã¯ããããã£ãæã¤ãã¨ãã§ããæå¾ã®ããããã£ãä»ã®ããããã£ã䏿¸ããã¾ããããã¯ãªãã¸ã§ã¯ãåæååã§ã®å¦çã¨åãã§ãã
ããã«ãç¹å¥ãªã¯ã©ã¹è¦ç´ ã®æ§æã¨ãã¦ã constructor
ã¨éçåæåãããã¯ã® 2 ã¤ããããèªåèªèº«ã§åç
§ãã¾ãã
constructor
ã¡ã½ããã¯ãã¯ã©ã¹ã§ä½æãããªãã¸ã§ã¯ãã使ãã¦åæåããããã®ç¹å¥ãªã¡ã½ããã§ãã "constructor" ã¨ããååã®ç¹å¥ãªã¡ã½ããã¯ãã¯ã©ã¹ã« 1 ã¤ããå®ç¾©ã§ãã¾ãããã¯ã©ã¹ã«è¤æ°ã® constructor
ã¡ã½ãããåå¨ããå ´åãSyntaxError
ãçºçãã¾ãã
ã¹ã¼ãã¼ã¯ã©ã¹ã®ã³ã³ã¹ãã©ã¯ã¿ã¼ã¯ãã¼ã¯ã¼ã super
ã使ç¨ãã¦å¼ã³åºããã¨ãã§ãã¾ãã
ã³ã³ã¹ãã©ã¯ã¿ã¼ã®ä¸ã§ã¤ã³ã¹ã¿ã³ã¹ããããã£ã使ãããã¨ãã§ãã¾ãã
class Rectangle {
constructor(height, width) {
this.height = height;
this.width = width;
}
}
ã¾ããã¤ã³ã¹ã¿ã³ã¹ããããã£ã®å¤ãã³ã³ã¹ãã©ã¯ã¿ã¼ã®å¼æ°ã«ä¾åããªãå ´åã¯ãã¯ã©ã¹ãã£ã¼ã«ãã¨ãã¦å®ç¾©ãããã¨ãã§ãã¾ãã
éçåæåãããã¯éçåæåãããã¯ã¯ãåæåä¸ã«æã®è©ä¾¡ãå«ãããã¨ãã§ãããã©ã¤ãã¼ãã¹ã³ã¼ãã«ã¢ã¯ã»ã¹ããªãããéçããããã£ã®æè»ãªåæåãè¡ããã¨ãã§ãã¾ãã
éçãããã¯ã¯è¤æ°å®£è¨ãããã¨ãã§ããéçãã£ã¼ã«ããéçã¡ã½ããã®å®£è¨ã¨æ··å¨ããããã¨ãã§ãã¾ãï¼éçé ç®ã¯ãã¹ã¦å®£è¨é ã«è©ä¾¡ããã¾ãï¼ã
ã¡ã½ããã¡ã½ããã¯ã¯ã©ã¹ãã¨ã«ãããã¿ã¤ãã«å®ç¾©ããããã¹ã¦ã®ã¤ã³ã¹ã¿ã³ã¹ã§å ±æããã¾ããã¡ã½ããã«ã¯ããã¬ã¼ã³é¢æ°ãéåæé¢æ°ãã¸ã§ãã¬ã¼ã¿ã¼é¢æ°ãéåæã¸ã§ãã¬ã¼ã¿ã¼é¢æ°ãããã¾ãã詳ããæ å ±ã¯ãã¡ã½ããå®ç¾©ãåç §ãã¦ãã ããã
class Rectangle {
constructor(height, width) {
this.height = height;
this.width = width;
}
// Getter
get area() {
return this.calcArea();
}
// Method
calcArea() {
return this.height * this.width;
}
*getSides() {
yield this.height;
yield this.width;
yield this.height;
yield this.width;
}
}
const square = new Rectangle(10, 10);
console.log(square.area); // 100
console.log([...square.getSides()]); // [10, 10, 10, 10]
éçã¡ã½ããã¨ãã£ã¼ã«ã
static
ãã¼ã¯ã¼ãã¯ãã¯ã©ã¹ã®éçã¡ã½ããã¾ãã¯ãã£ã¼ã«ããå®ç¾©ãã¾ããéçããããã£ï¼ãã£ã¼ã«ãã¨ã¡ã½ããï¼ã¯ãã¤ã³ã¹ã¿ã³ã¹ãã¨ã«å®ç¾©ãããã®ã§ã¯ãªããã¯ã©ã¹èªä½ã«å®ç¾©ããã¾ããéçã¡ã½ããã¯ãã¢ããªã±ã¼ã·ã§ã³ã®ã¦ã¼ãã£ãªãã£é¢æ°ã使ããããã«ä½¿ç¨ãããã¨ãå¤ãã䏿¹ãéçãã£ã¼ã«ãã¯ããã£ãã·ã¥ãä¿®æ£ãããæ§æãªã©ãã¤ã³ã¹ã¿ã³ã¹éã§è¤è£½ããå¿
è¦ã®ãªããã¼ã¿ã«æçã§ãã
class Point {
constructor(x, y) {
this.x = x;
this.y = y;
}
static displayName = "Point";
static distance(a, b) {
const dx = a.x - b.x;
const dy = a.y - b.y;
return Math.hypot(dx, dy);
}
}
const p1 = new Point(5, 5);
const p2 = new Point(10, 10);
p1.displayName; // undefined
p1.distance; // undefined
p2.displayName; // undefined
p2.distance; // undefined
console.log(Point.displayName); // "Point"
console.log(Point.distance(p1, p2)); // 7.0710678118654755
ãã£ã¼ã«ã宣è¨
ã¯ã©ã¹ã®ãã£ã¼ã«ãå®£è¨æ§æã§ã¯ãã³ã³ã¹ãã©ã¯ã¿ã¼ã®ä¾ã¯æ¬¡ã®ããã«æ¸ããã¨ãã§ãã¾ãã
class Rectangle {
height = 0;
width;
constructor(height, width) {
this.height = height;
this.width = width;
}
}
ã¯ã©ã¹ã®ãã£ã¼ã«ãã¯ãªãã¸ã§ã¯ãã®ããããã£ã«ä¼¼ã¦ãã¦å¤æ°ã§ã¯ãªãã®ã§ã宣è¨ããããã« const
ãªã©ã®ãã¼ã¯ã¼ãã¯ä½¿ç¨ãã¾ããã JavaScript ã§ã¯ããã©ã¤ãã¼ãè¦ç´ ã¯ç¹å¥ãªèå¥åæ§æã使ãã®ã§ã public
ã private
ã®ãããªä¿®é£¾åãã¼ã¯ã¼ãã使ãã¹ãã§ã¯ããã¾ããã
ä¸ã§è¦ãããã«ããã£ã¼ã«ãã¯æ¢å®å¤ä»ãã§å®£è¨ãããã¨ããæ¢å®å¤ãªãã§å®£è¨ãããã¨ãã§ãã¾ããæ¢å®å¤ã®ãªããã£ã¼ã«ã㯠undefined
ãæ¢å®å¤ã¨ãªãã¾ãããã£ã¼ã«ããåãã£ã¦å®£è¨ãããã¨ã§ãã¯ã©ã¹ã®å®£è¨ãããããã¥ã¡ã³ãåããããã£ã¼ã«ãã常ã«åå¨ããããã«ãªããæé©åãããããã¾ãã
詳細ã¯ãããªãã¯ã¯ã©ã¹ãã£ã¼ã«ããåç §ãã¦ãã ããã
ãã©ã¤ãã¼ãè¦ç´ãã©ã¤ãã¼ããã£ã¼ã«ãã使ãã¨ã宣è¨ã¯ä¸è¨ã®ããã«å®£è¨ã§ãã¾ãã
class Rectangle {
#height = 0;
#width;
constructor(height, width) {
this.#height = height;
this.#width = width;
}
}
ã¯ã©ã¹ã®å¤é¨ãããã©ã¤ãã¼ããã£ã¼ã«ããåç §ããã¨ã¨ã©ã¼ã«ãªãã¾ãããããã®ãã£ã¼ã«ãã¯ã¯ã©ã¹æ¬ä½ã®å é¨ã§ã®ã¿èªã¿æ¸ãã§ãã¾ãã ã¯ã©ã¹ã®å¤ããè¦ããªããã¨ãå®ç¾©ãããã¨ã§ãã¯ã©ã¹ã®ã¦ã¼ã¶ã¼ããã¼ã¸ã§ã³ãã¨ã«å¤ããå 鍿§é ã«ä¾åããªããã¨ä¿è¨¼ãããã¨ãã§ãã¾ãã
ãã©ã¤ãã¼ããã£ã¼ã«ãã¯ããã£ã¼ã«ã宣è¨ã§ã®ã¿å®£è¨ã§ãã¾ããé常ã®ããããã£ã®ããã«ãå¾ããå²ãå½ã¦ããã¨ã§ä½æãããã¨ã¯ã§ãã¾ããã
詳細æ å ±ã«ã¤ãã¦ã¯ããã©ã¤ãã¼ãè¦ç´ ãåç §ãã¦ãã ããã
ç¶æ¿extends
ãã¼ã¯ã¼ãã¯ãã¯ã©ã¹ãå¥ãªã¯ã©ã¹ï¼ã¯ã©ã¹ã¾ãã¯é¢æ°ï¼ã®åã¨ãã¦ä½æããããã«ãã¯ã©ã¹å®£è¨ã¾ãã¯ã¯ã©ã¹å¼ã®ä¸ã§ä½¿ãã¾ãã
class Animal {
constructor(name) {
this.name = name;
}
speak() {
console.log(`${this.name}ãé³´ãã¾ãã`);
}
}
class Dog extends Animal {
constructor(name) {
super(name); // ã¹ã¼ãã¼ã¯ã©ã¹ã®ã³ã³ã¹ãã©ã¯ã¿ã¼ãå¼ã³åºãã name 弿°ã渡ã
}
speak() {
console.log(`${this.name}ãå ãã¾ãã`);
}
}
const d = new Dog("ãããã¼");
d.speak(); // ãããã¼ãå ãã¾ãã
ãµãã¯ã©ã¹ã«ã³ã³ã¹ãã©ã¯ã¿ã¼ãåå¨ããå ´åã¯ã this
ã使ç¨ããåã«ãæåã« super()
ãå¼ã³åºãå¿
è¦ãããã¾ãããã¼ã¯ã¼ã super
ã使ç¨ãã¦ãã¹ã¼ãã¼ã¯ã©ã¹ã®å¯¾å¿ããã¡ã½ãããå¼ã³åºããã¨ãã§ãã¾ãã
class Cat {
constructor(name) {
this.name = name;
}
speak() {
console.log(`${this.name}ãé³´ãã¾ãã`);
}
}
class Lion extends Cat {
speak() {
super.speak();
console.log(`${this.name}ãå ãã¾ãã`);
}
}
const l = new Lion("ãã¡ã¸ã¼");
l.speak();
// ãã¡ã¸ã¼ãé³´ãã¾ãã
// ãã¡ã¸ã¼ãå ãã¾ãã
è©ä¾¡ã®é åº
class
宣è¨ã class
å¼ãè©ä¾¡ãããã¨ãããã®ãã¾ãã¾ãªæ§æè¦ç´ ã¯ä»¥ä¸ã®é åºã§è©ä¾¡ããã¾ãã
extends
ç¯ãããã°ããããè©ä¾¡ããã¾ããããã¯æå¹ãªã³ã³ã¹ãã©ã¯ã¿ã¼é¢æ°ã null
ã§ãªããã°ãªãããããã§ãªããã° TypeError
ãçºçãã¾ããconstructor
ã¡ã½ãããæ½åºããã constructor
ãåå¨ããªãå ´åã¯æ¢å®ã®å®è£
ã§ç½®ãæãããã¾ãããããã constructor
ã®å®ç¾©ã¯åãªãã¡ã½ããå®ç¾©ã§ããããããã®æ®µéã¯è¦³å¯ãããã¨ãã§ãã¾ãããthis
å¤ã«ã¯ã¯ã©ã¹ãå²ã this
å¤ãè¨å®ããã¾ãï¼ã¯ã©ã¹ãã®ãã®ã§ã¯ããã¾ããï¼ãããããã£å¤ã¯ã¾ã è©ä¾¡ããã¾ãããprototype
ããããã£ã«ã¤ã³ã¹ãã¼ã«ãããéçã¡ã½ããã¨ã¢ã¯ã»ãµã¼ã¯ã¯ã©ã¹èªä½ã«ã¤ã³ã¹ãã¼ã«ããã¾ãããã©ã¤ãã¼ãã¤ã³ã¹ã¿ã³ã¹ã¡ã½ããã¨ã¢ã¯ã»ãµã¼ã¯ãå¾ã§ã¤ã³ã¹ã¿ã³ã¹ã«ç´æ¥ã¤ã³ã¹ãã¼ã«ããããã«ä¿åããã¾ãããã®æ®µéã¯è¦³å¯ãããã¨ãã§ãã¾ãããextends
ã§æå®ãããããã¿ã¤ã㨠constructor
ã§æå®ããå®è£
ã§åæåããã¾ããä¸è¨ã®ãã¹ã¦ã®æ®µéã§ãè©ä¾¡ãããå¼ãã¯ã©ã¹ã®ååã«ã¢ã¯ã»ã¹ãããã¨ããã¨ãã¯ã©ã¹ãã¾ã åæåããã¦ããªããã ReferenceError
ãçºçãã¾ããsuper()
å¼ã³åºããè¿ãç´åï¼æ´¾çã¯ã©ã¹ã®å ´åï¼ã«è©ä¾¡ããã¾ããthis
ãã¯ã©ã¹èªèº«ã«è¨å®ããç¶æ
ã§è©ä¾¡ãããããããã£ãã¯ã©ã¹ä¸ã«ä½æããã¾ããthis
ãã¯ã©ã¹èªèº«ã«è¨å®ããç¶æ
ã§è©ä¾¡ããã¾ããã¤ã³ã¹ã¿ã³ã¹ãã©ã®ããã«ä½æããããã¯ã constructor
ãåç
§ãã¦ãã ããã
éçã¡ã½ãããã¤ã³ã¹ã¿ã³ã¹ã¡ã½ããã this
ã®å¤ãªãã§å¼ã³åºããå ´åãä¾ãã°ã¡ã½ããã夿°ã«å²ãå½ã¦ã¦ããå¼ã³åºãã¨ãã¡ã½ããå
é¨ã§ã¯ this
ã®å¤ã undefined
ã«ãªãã¾ãããã®åä½ã¯ã "use strict"
ãã£ã¬ã¯ãã£ããåå¨ããªãå ´åã§ãåãã§ãã class
æ¬ä½ã®ä¸ã®ã³ã¼ãã¯å¸¸ã«å³æ ¼ã¢ã¼ãã§å®è¡ãããããã§ãã
class Animal {
speak() {
return this;
}
static eat() {
return this;
}
}
const obj = new Animal();
obj.speak(); // the Animal object
const speak = obj.speak;
speak(); // undefined
Animal.eat(); // class Animal
const eat = Animal.eat;
eat(); // undefined
峿 ¼ã¢ã¼ãã§ãªã徿¥ã®é¢æ°ãã¼ã¹ã®æ§æã§ä¸è¨ãæ¸ãç´ãã¨ã this
ã¡ã½ããå¼ã³åºãã¯èªåçã« globalThis
ã«ãã¤ã³ãããã¾ãã峿 ¼ã¢ã¼ãã§ã¯ this
ã®å¤ã¯ undefined
ã®ã¾ã¾ã§ãã
function Animal() {}
Animal.prototype.speak = function () {
return this;
};
Animal.eat = function () {
return this;
};
const obj = new Animal();
const speak = obj.speak;
speak(); // global object (in nonâstrict mode)
const eat = Animal.eat;
eat(); // global object (in non-strict mode)
仿§æ¸ ãã©ã¦ã¶ã¼ã®äºææ§ é¢é£æ
å ±
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