JavaScript ã¯ãããã¿ã¤ããã¼ã¹ã®è¨èªã§ãããªãã¸ã§ã¯ãã®åä½ã¯ãèªåèªèº«ã®ããããã£ã¨ãããã¿ã¤ãã®ããããã£ã§æå®ãã¾ããããããã¯ã©ã¹ã®è¿½å ã«ããããªãã¸ã§ã¯ãã®é層ã®ä½æãããããã£ã¨ãã®å¤ã®ç¶æ¿ã¯ãJava ãªã©ã®ä»ã®ãªãã¸ã§ã¯ãæåè¨èªã¨ããªãæ¹åæ§ãè¿ããªã£ã¦ãã¾ãããã®ç« ã§ã¯ãã¯ã©ã¹ãããªãã¸ã§ã¯ãã使ããæ¹æ³ã説æãã¾ãã
ä»ã«ãå¤ãã®è¨èªã§ã¯ãã¯ã©ã¹ãã³ã³ã¹ãã©ã¯ã¿ã¼ã¯ããªãã¸ã§ã¯ããã¤ã³ã¹ã¿ã³ã¹ã¨æç¢ºã«å¤å¥ããã¾ããJavaScript ã§ã¯ãã¯ã©ã¹ã¯ä¸»ã«æ¢åã®ãããã¿ã¤ãç¶æ¿ã®ä»çµã¿ãæ½è±¡åãããã®ã§ããã¹ã¦ã®ãã¿ã¼ã³ããããã¿ã¤ããã¼ã¹ã®ç¶æ¿ã«å¤æå¯è½ã§ããã¯ã©ã¹èªä½ãé常㮠JavaScript ã®å¤ã§ãããç¬èªã®ãããã¿ã¤ããã§ã¼ã³ãæã£ã¦ãã¾ããå®éãJavaScript ã®ã»ã¨ãã©ã®é¢æ°ã¯ã³ã³ã¹ãã©ã¯ã¿ã¼ã¨ãã¦ä½¿ç¨ãããã¨ãã§ãã¾ã - æ°ãããªãã¸ã§ã¯ãã使ããã«ã¯ãã³ã³ã¹ãã©ã¯ã¿ã¼é¢æ°ã¨ä¸ç·ã« new
æ¼ç®åã使ç¨ãã¾ãã
ãã®ãã¥ã¼ããªã¢ã«ã§ã¯ãããæ½è±¡åãããã¯ã©ã¹ã¢ãã«ã使ã£ã¦éã³ãã¯ã©ã¹ãã©ã®ãããªæå³ã¥ããããã®ãã«ã¤ãã¦èª¬æãã¾ãããããåºç¤ã¨ãªããããã¿ã¤ãã·ã¹ãã ãæ·±ãæãä¸ãããã®ã§ããã°ãç¶æ¿ã¨ãããã¿ã¤ããã§ã¼ã³ã®ã¬ã¤ããèªãã¨è¯ãã§ãããã
ãã®ç« ã§ã¯ãããªãããã§ã« JavaScript ã«ããç¨åº¦æ £ãã¦ãã¦ãæ®éã®ãªãã¸ã§ã¯ãã使ç¨ãããã¨ããããã¨ãæ³å®ãã¦ãã¾ãã
ã¯ã©ã¹ã®æ¦è¦JavaScript ãããç¨åº¦ä½¿ãããªãã¦ããæ¹ããããã¯ã¬ã¤ãã«æ²¿ã£ã¦é²ãã§ããæ¹ã¯ããã¨ã使ãã¦ããªãã¦ãããã§ã«ã¯ã©ã¹ã使ç¨ãããã¨ãããã®ã§ã¯ãªãã§ããããï¼ä¾ãã°ãããã¯é¦´æã¿ãããããããã¾ããã
const bigDay = new Date(2019, 6, 19);
console.log(bigDay.toLocaleDateString());
if (bigDay.getTime() < Date.now()) {
console.log("Once upon a time...");
}
æåã®è¡ã§ã¯ãã¯ã©ã¹ Date
ã®ã¤ã³ã¹ã¿ã³ã¹ã使ããbigDay
ã¨åä»ãã¦ãã¾ãã2 è¡ç®ã§ã¯ãbigDay
ã¤ã³ã¹ã¿ã³ã¹ã«å¯¾ã㦠ã¡ã½ãã toLocaleDateString()
ãå¼ã³åºãã¦ãæååãè¿ãã¦ãã¾ããæ¬¡ã«ã2 ã¤ã®æ°å¤ãæ¯è¼ãã¦ãã¾ãã1 ã¤ã¯ getTime()
ã¡ã½ããããè¿ããããã®ããã 1 ã¤ã¯ Date
ã¯ã©ã¹èªä½ãã Date.now()
ã¨ãã¦ç´æ¥å¼ã³åºããããã®ã§ãã
Date
㯠JavaScript ã®çµã¿è¾¼ã¿ã¯ã©ã¹ã§ãããã®ä¾ãããã¯ã©ã¹ãä½ãããã®ãã®åºæ¬çãªèããå¾ããã¨ãã§ãã¾ãã
new
æ¼ç®åãç¨ãã¦ãªãã¸ã§ã¯ãã使ãã¾ãããããã¯ãã¯ã©ã¹ã® 3 大æ©è½ã«å¯¾å¿ãã¦ãã¾ãã
ã¯ã©ã¹ã¯ãµã¤ããã¯ã©ã¹å®£è¨ã§ä½æããã¾ãã
class MyClass {
// ã¯ã©ã¹æ¬ä½...
}
ã¯ã©ã¹æ¬ä½ã®ä¸ã§ãå©ç¨ã§ããæ©è½ã¯å¤å²ã«ãããã¾ãã
class MyClass {
// ã³ã³ã¹ãã©ã¯ã¿ã¼
constructor() {
// ã³ã³ã¹ãã©ã¯ã¿ã¼ã®æ¬ä½
}
// ã¤ã³ã¹ã¿ã³ã¹ãã£ã¼ã«ã
myField = "foo";
// ã¤ã³ã¹ã¿ã³ã¹ã¡ã½ãã
myMethod() {
// myMethod æ¬ä½
}
// éçãã£ã¼ã«ã
static myStaticField = "bar";
// éçã¡ã½ãã
static myStaticMethod() {
// myStaticMethod æ¬ä½
}
// éçãããã¯
static {
// éçåæåã³ã¼ã
}
// ãã£ã¼ã«ããã¡ã½ãããéçãã£ã¼ã«ããéçã¡ã½ããã«ã¯ããã¹ã¦
// ããã©ã¤ãã¼ããå½¢å¼ãããã¾ã
#myPrivateField = "bar";
}
ES6 以åã®ä¸çããæ¥ã人ã¯ã颿°ãã³ã³ã¹ãã©ã¯ã¿ã¼ã¨ãã¦ä½¿ç¨ãããã¨ã«æ £ãã¦ããããããã¾ãããä¸è¨ã®ãã¿ã¼ã³ã¯ã颿°ã³ã³ã¹ãã©ã¯ã¿ã¼ã使ãã¨ããããã以ä¸ã®ããã«å¯¾å¿ããããã¨ãã§ãã¾ãã
function MyClass() {
this.myField = "foo";
// ã³ã³ã¹ãã©ã¯ã¿ã¼æ¬ä½
}
MyClass.myStaticField = "bar";
MyClass.myStaticMethod = function () {
// myStaticMethod æ¬ä½
};
MyClass.prototype.myMethod = function () {
// myMethod æ¬ä½
};
(function () {
// éçåæåã³ã¼ã
})();
ã¡ã¢: ãã©ã¤ãã¼ããã£ã¼ã«ãã¨ã¡ã½ããã¯ãã¯ã©ã¹ã«ãããæ°ããæ©è½ã§ããã颿°ã³ã³ã¹ãã©ã¯ã¿ã¼ã«ãããåçã®æ©è½ã¯ããã¾ããã
ã¯ã©ã¹ã®æ§ç¯ã¯ã©ã¹ã宣è¨ããå¾ã¯ãnew
æ¼ç®åã使ç¨ãã¦ãã®ã¤ã³ã¹ã¿ã³ã¹ã使ãããã¨ãã§ãã¾ãã
const myInstance = new MyClass();
console.log(myInstance.myField); // 'foo'
myInstance.myMethod();
ä¸è¬çãªé¢æ°ã³ã³ã¹ãã©ã¯ã¿ã¼ã¯ãnew
ã§æ§ç¯ãããã¨ããnew
ãªãã§å¼ã³åºããã¨ãå¯è½ã§ããããããnew
ãªãã§ã¯ã©ã¹ããå¼ã³åºãããããã¨ããã¨ãã¨ã©ã¼ã«ãªãã¾ãã
const myInstance = MyClass(); // TypeError: Class constructor MyClass cannot be invoked without 'new'
ã¯ã©ã¹å®£è¨ã®å·»ãä¸ã
颿°å®£è¨ã¨ã¯ç°ãªããã¯ã©ã¹å®£è¨ã¯å·»ãä¸ããè¡ããã¾ããï¼è¦æ¹ãå¤ããã¨ãå·»ãä¸ããè¡ããããã䏿çãªãããã¾ã¼ã³ã®å¶ç´ãåãã¾ãï¼ãã¤ã¾ãã宣è¨åã«ã¯ã©ã¹ã使ç¨ãããã¨ã¯ã§ãã¾ããã
new MyClass(); // ReferenceError: Cannot access 'MyClass' before initialization
class MyClass {}
ãã®åä½ã¯ãlet
ã const
ã§å®£è¨ãã夿°ã¨ä¼¼ã¦ãã¾ãã
颿°ã¨åæ§ã«ãã¯ã©ã¹å®£è¨ã«ã対å¿ããå¼ãããã¾ãã
const MyClass = class {
// Class body...
};
ã¯ã©ã¹å¼ãååãæã¤ãã¨ãã§ãã¾ããå¼ã®ååã¯ãã¯ã©ã¹æ¬ä½ã§ã®ã¿è¦ããã¨ãã§ãã¾ãã
const MyClass = class MyClassLongerName {
// ã¯ã©ã¹æ¬ä½ãããã§ã¯ãMyClass 㨠MyClassLongerName ã¯åãã¯ã©ã¹ãæãã¦ãã¾ãã
};
new MyClassLongerName(); // ReferenceError: MyClassLongerName is not defined
ã³ã³ã¹ãã©ã¯ã¿ã¼
ããããã¯ã©ã¹ã®æãéè¦ãªä»äºã¯ããªãã¸ã§ã¯ãã®ãå·¥å ´ãã¨ãã¦æ©è½ãããã¨ã§ããããä¾ãã°ãDate
ã³ã³ã¹ãã©ã¯ã¿ã¼ã使ç¨ããéãæ¸¡ãããæ¥ä»ãã¼ã¿ãè¡¨ãæ°ãããªãã¸ã§ã¯ããçæããããã¨ãæå¾
ãã¾ããããã§ãã®ã¤ã³ã¹ã¿ã³ã¹ãå
¬éãããä»ã®ã¡ã½ãããæä½ãããã¨ãã§ãã¾ããã¯ã©ã¹ã§ã¯ãã¤ã³ã¹ã¿ã³ã¹ã®çæã¯ã³ã³ã¹ãã©ã¯ã¿ã¼ã«ãã£ã¦è¡ããã¾ãã
ä¾ã¨ãã¦ãç¹å®ã®è²ã表ã Color
ã¨ããã¯ã©ã¹ã使ãã¾ããããã¦ã¼ã¶ã¼ã¯ RGB ã® 3 ã¤ã®å¤ã渡ãã¦è²ã使ãã¾ãã
class Color {
constructor(r, g, b) {
// RGB å¤ã `this` ã®ããããã£ã¨ãã¦å²ãå½ã¦ãã
this.values = [r, g, b];
}
}
ãã©ã¦ã¶ã¼ã§éçºãã¼ã«ãéããä¸è¨ã®ã³ã¼ããã³ã³ã½ã¼ã«ã«è²¼ãä»ããã¤ã³ã¹ã¿ã³ã¹ã使ãã¾ãã
const red = new Color(255, 0, 0);
console.log(red);
ãã®ãããªåºåã確èªã§ããã¯ãã§ãã
Object { values: (3) [â¦] } values: Array(3) [ 255, 0, 0 ]
ããã§ Color
ã¤ã³ã¹ã¿ã³ã¹ã使ãããã¨ã«æåãããã®ã¤ã³ã¹ã¿ã³ã¹ã«ã¯ values
ããããã£ããããããã¯æ¸¡ãã RGB å¤ã®é
åã§ããããã¯æ¬¡ã®ãã®ã¨ã»ã¼åãã§ãã
function createColor(r, g, b) {
return {
values: [r, g, b],
};
}
ã³ã³ã¹ãã©ã¯ã¿ã¼ã®æ§æã¯é常ã®é¢æ°ã¨å ¨ãåãã§ããã¤ã¾ããæ®ä½å¼æ°ã®ãããªä»ã®æ§æã使ç¨ã§ãã¾ãã
class Color {
constructor(...values) {
this.values = values;
}
}
const red = new Color(255, 0, 0);
// ä¸è¨ã¨åãå½¢ç¶ã®ã¤ã³ã¹ã¿ã³ã¹ã使ãã¾ãã
new
ãå¼ã³åºããã³ã«ãç°ãªãã¤ã³ã¹ã¿ã³ã¹ã使ããã¾ãã
const red = new Color(255, 0, 0);
const anotherRed = new Color(255, 0, 0);
console.log(red === anotherRed); // false
ã¯ã©ã¹ã®ã³ã³ã¹ãã©ã¯ã¿ã¼å
ã§ã¯ãthis
ã®å¤ã¯æ°ãã使ãããã¤ã³ã¹ã¿ã³ã¹ãæãã¾ãããã®ã¤ã³ã¹ã¿ã³ã¹ã«ããããã£ãå²ãå½ã¦ããã¨ãã§ãã¾ãããæ¢åã®ããããã£ï¼ç¹ã«ã¡ã½ãã â æ¬¡ååãä¸ãã¾ãï¼ãèªã¿åããã¨ãã§ãã¾ãã
this
ã®å¤ã¯ãèªåçã« new
ã®çµæã¨ãã¦è¿ããã¾ããã³ã³ã¹ãã©ã¯ã¿ã¼ããã¯å¤ãè¿ããªããã¨ããå§ããã¾ããããªããã£ãã§ãªãå¤ãè¿ãã¨ãããã new
å¼ã®å¤ã¨ãªãã this
ã®å¤ã¯åé¤ãããããã§ããï¼new
ãä½ãããã®ãã«ã¤ãã¦ã¯ããã®è§£èª¬ã§è©³ãã説æããã¦ãã¾ããï¼
class MyClass {
constructor() {
this.myField = "foo";
return {};
}
}
console.log(new MyClass().myField); // undefined
ã¤ã³ã¹ã¿ã³ã¹ã¡ã½ãã
ã¯ã©ã¹ãã³ã³ã¹ãã©ã¯ã¿ã¼ã ããæã¤å ´åãããã¯åã«ãã¬ã¼ã³ãªãªãã¸ã§ã¯ãã使ãã createX
ãã¡ã¯ããªã¼é¢æ°ã¨å¤§å·®ããã¾ãããããããã¯ã©ã¹ã®å¨åã¯ãã¤ã³ã¹ã¿ã³ã¹ã«ã¡ã½ãããèªåçã«å²ãå½ã¦ãããã³ãã¬ã¼ããã¨ãã¦ä½¿ç¨ã§ãããã¨ã§ãã
ä¾ãã° Date
ã¤ã³ã¹ã¿ã³ã¹ã§ã¯ãå¹´ãæãææ¥ãªã©ã®ããã«ã1 ã¤ã®æ¥ä»å¤ãããã¾ãã¾ãªæ
å ±ãåå¾ããããã«ããã¾ãã¾ãªã¡ã½ããã使ç¨ã§ãã¾ããã¾ããsetFullYear
ã®ããã«ã対å¿ãã setX
ã§ãããã®å¤ãè¨å®ãããã¨ãã§ãã¾ãã
èªåèªèº«ã§ä½ã£ã Color
ã¯ã©ã¹ã«ã¯ãè²ã®èµ¤æåã®å¤ãè¿ã getRed
ã¨ããã¡ã½ããã追å ãããã¨ãã§ãã¾ãã
class Color {
constructor(r, g, b) {
this.values = [r, g, b];
}
getRed() {
return this.values[0];
}
}
const red = new Color(255, 0, 0);
console.log(red.getRed()); // 255
ã¡ã½ããããªãå ´åã¯ãã³ã³ã¹ãã©ã¯ã¿ã¼ã®ä¸ã§é¢æ°ãå®ç¾©ããããªãããããã¾ããã
class Color {
constructor(r, g, b) {
this.values = [r, g, b];
this.getRed = function () {
return this.values[0];
};
}
}
ããã¯ãã¾ãåä½ãã¾ããããããåé¡ã¯ãColor
ã¤ã³ã¹ã¿ã³ã¹ã使ããããã³ã«ããã¹ã¦åããã¨ãããã«ãããããããæ°ãã颿°ã使ããããã¨ã§ãã
console.log(new Color().getRed === new Color().getRed); // false
ããã«å¯¾ãã¦ãã¡ã½ããã使ç¨ããã¨ããã¹ã¦ã®ã¤ã³ã¹ã¿ã³ã¹ã§å
±æããããã¨ã«ãªãã¾ãã颿°ã¯ãã¹ã¦ã®ã¤ã³ã¹ã¿ã³ã¹ã§å
±æãããã¨ãã§ãã¾ãããããã§ãç°ãªãã¤ã³ã¹ã¿ã³ã¹ãå¼ã³åºãã¨ãthis
ã®å¤ãç°ãªããããåä½ãç°ãªããã¨ãããã¾ãããã®ã¡ã½ãããã©ãã«æ ¼ç´ããã¦ãããã¨ããã¨ããã¹ã¦ã®ã¤ã³ã¹ã¿ã³ã¹ã®ãããã¿ã¤ããã¤ã¾ã Color.prototype
ã«å®ç¾©ããã¦ãã¾ãã詳ããã¯ ç¶æ¿ã¨ãããã¿ã¤ããã§ã¼ã³ ã«èª¬æãããã¾ãã
åæ§ã«ãè²ã®èµ¤æåã®å¤ãè¨å®ãã setRed
ã¨ããæ°ããã¡ã½ããã使ãããã¨ãã§ãã¾ãã
class Color {
constructor(r, g, b) {
this.values = [r, g, b];
}
getRed() {
return this.values[0];
}
setRed(value) {
this.values[0] = value;
}
}
const red = new Color(255, 0, 0);
red.setRed(0);
console.log(red.getRed()); // 0ããã¡ããããã®æ®µéã§ã¯ãé»ãã¨å¼ã°ãããã®ãªã®ã§ã
ãã©ã¤ãã¼ããã£ã¼ã«ã
ã¤ã³ã¹ã¿ã³ã¹ã® values
é
åã«ç´æ¥ã¢ã¯ã»ã¹ã§ããã®ã«ããããã getRed
ã setRed
ã¡ã½ããã使ç¨ããå¿
è¦ãããã®ããã¨æãããããããã¾ããã
class Color {
constructor(r, g, b) {
this.values = [r, g, b];
}
}
const red = new Color(255, 0, 0);
red.values[0] = 0;
console.log(red.values[0]); // 0
ãªãã¸ã§ã¯ãæåããã°ã©ãã³ã°ã«ã¯ããã«ãã»ã«åãã¨å¼ã°ããå²å¦ãããã¾ããããã¯ããªãã¸ã§ã¯ãã®åºç¤ã¨ãªãå®è£ ã«ã¯ã¢ã¯ã»ã¹ããããªãã¸ã§ã¯ãã¨å¯¾è©±ããããã«æ½è±¡åãããã¡ã½ããã使ç¨ãããã¨ãæå³ãã¦ãã¾ããä¾ãã°ãçªç¶ãè²ã HSL ã¨ãã¦è¡¨ããã¨ã«ããã¨ãã¾ãã
class Color {
constructor(r, g, b) {
// values is now an HSL array!
this.values = rgbToHSL([r, g, b]);
}
getRed() {
return this.values[0];
}
setRed(value) {
this.values[0] = value;
}
}
const red = new Color(255, 0, 0);
console.log(red.values[0]); // 0ã255 ã§ã¯ãªããªãã¾ããç´ç²ãªèµ¤ã® H ã®å¤ã¯ 0 ã ããã§ãã
ã¦ã¼ã¶ã¼ã¯ values
ã RGB å¤ãçªç¶å´©å£ããããã¨ãæå³ãã¦ããã¨æãè¾¼ã¿ãèªåã®ãã¸ãã¯ãå£ããåå ã«ãªãããã¾ããããã®ãããããããªããã¯ã©ã¹ã®å®è£
è
ã§ããã°ãã¤ã³ã¹ã¿ã³ã¹ã®å
é¨ãã¼ã¿æ§é ãã¦ã¼ã¶ã¼ããé ãããã§ããããããã¯ãAPI ããããã«ä¿ã¤ããã¨ãããªããã害ã®ãªããªãã¡ã¯ã¿ãªã³ã°ããããã¨ãã«ã¦ã¼ã¶ã¼ã®ã³ã¼ããå£ããã®ãé²ãããã§ããã¯ã©ã¹ã§ã¯ãããã¯ãã©ã¤ãã¼ããã£ã¼ã«ããéãã¦è¡ããã¾ãã
ãã©ã¤ãã¼ããã£ã¼ã«ãã¯ãæ¥é è¾ã« #
(ããã·ã¥è¨å·) ãæã¤èå¥åã§ãããã®ããã·ã¥ã¯ãã£ã¼ã«ãã®ååã«ä¸å¯æ¬ ãªé¨åã§ããããã©ã¤ãã¼ããã£ã¼ã«ãããããªãã¯ãã£ã¼ã«ããã¡ã½ããã¨ååãè¡çªãããã¨ã¯ãªããã¨ãæå³ãã¦ãã¾ãããã©ã¤ãã¼ããã£ã¼ã«ããã¯ã©ã¹ã®ã©ããã§åç
§ããã«ã¯ãã¯ã©ã¹æ¬ä½ã§ããã宣è¨ããå¿
è¦ãããã¾ãï¼ãã©ã¤ãã¼ãããã®å ´ã§ä½æãããã¨ã¯ã§ãã¾ããï¼ããããé¤ãã°ããã©ã¤ãã¼ããã£ã¼ã«ãã¯é常ã®ããããã£ã¨ã»ã¨ãã©åãã§ãã
class Color {
// 宣è¨: ããããã® Color ã¤ã³ã¹ã¿ã³ã¹ã«ã¯ã #values ã¨ãããã©ã¤ãã¼ããã£ã¼ã«ãããã
#values;
constructor(r, g, b) {
this.#values = [r, g, b];
}
getRed() {
return this.#values[0];
}
setRed(value) {
this.#values[0] = value;
}
}
const red = new Color(255, 0, 0);
console.log(red.getRed()); // 255
ã¯ã©ã¹å¤ãããã©ã¤ãã¼ããã£ã¼ã«ãã«ã¢ã¯ã»ã¹ããã¨ãåæã®æ§æã¨ã©ã¼ã«ãªãã¾ãã#privateField
ã¯ç¹æ®ãªæ§æãªã®ã§ãéçè§£æãè¡ããã³ã¼ããè©ä¾¡ããåã«ãã©ã¤ãã¼ããã£ã¼ã«ãã®ä½¿ãæ¹ããã¹ã¦è¦ã¤ãããã¨ãã§ãããããè¨èªã¯ãããé²ããã¨ãã§ãã¾ãã
console.log(red.#values); // SyntaxError: Private field '#values' must be declared in an enclosing class
ã¡ã¢: Chrome ã³ã³ã½ã¼ã«ã§å®è¡ããã³ã¼ãã¯ãã¯ã©ã¹ã®å¤é¨ãããã©ã¤ãã¼ãè¦ç´ ã«ã¢ã¯ã»ã¹ãããã¨ãã§ãã¾ããããã¯ã JavaScript ã®æ§æå¶éãç·©åããéçºãã¼ã«ç¬èªã®æ©è½ã§ãã
JavaScript ã§ã®ãã©ã¤ãã¼ããã£ã¼ã«ãã¯ãã¼ããã©ã¤ãã¼ãã§ããã¯ã©ã¹ããã®ãã©ã¤ãã¼ããã£ã¼ã«ããå ¬éããã¡ã½ãããå®è£ ãã¦ããªãå ´åãã¯ã©ã¹ã®å¤ãããããåå¾ããä»çµã¿ã¯å ¨ãããã¾ãããã¤ã¾ããå ¬éãããã¡ã½ããã®åä½ãå¤ãããªãéããã¯ã©ã¹ã®ãã©ã¤ãã¼ããã£ã¼ã«ãã«ã©ããªãªãã¡ã¯ã¿ãªã³ã°ãè¡ã£ã¦ãå®å ¨ã ã¨ãããã¨ã§ãã
values
ãã£ã¼ã«ãããã©ã¤ãã¼ãã«ããå¾ã¯ãgetRed
㨠setRed
ã®ã¡ã½ãããåç´ãªãã¹ã¹ã«ã¼ã¡ã½ããã«ããã®ã§ã¯ãªããããã¤ãã®ãã¸ãã¯ã追å ãããã¨ãã§ãã¾ããä¾ã¨ãã¦ãsetRed
ã«æå¹ãª R å¤ãã©ããã調ã¹ãæ©è½ã追å ãããã¨ãã§ãã¾ãã
class Color {
#values;
constructor(r, g, b) {
this.#values = [r, g, b];
}
getRed() {
return this.#values[0];
}
setRed(value) {
if (value < 0 || value > 255) {
throw new RangeError("Invalid R value");
}
this.#values[0] = value;
}
}
const red = new Color(255, 0, 0);
red.setRed(1000); // RangeError: Invalid R value
ãã values
ããããã£ãå
¬éããã¾ã¾ã«ãã¦ããã¨ãã¦ã¼ã¶ã¼ã¯ values[0]
ã«ç´æ¥å²ãå½ã¦ããã¨ã§ç°¡åã«ãã®ãã§ãã¯ãåé¿ãã䏿£ãªè²ã使ãããã¨ãã§ãã¾ãããããããã¾ãã«ãã»ã«åããã API ã使ãã°ãã³ã¼ããããå
ç¢ã«ãã䏿µã§ã®ãã¸ãã¯ã¨ã©ã¼ãé²ããã¨ãã§ããã®ã§ãã
ã¯ã©ã¹ã¡ã½ããã¯ãåãã¯ã©ã¹ã«å±ãã¦ããéããä»ã®ã¤ã³ã¹ã¿ã³ã¹ã®ãã©ã¤ãã¼ããã£ã¼ã«ããèªã¿åããã¨ãã§ãã¾ãã
class Color {
#values;
constructor(r, g, b) {
this.#values = [r, g, b];
}
redDifference(anotherColor) {
// #values ã«ã¯ãå¿
ãããããããã¢ã¯ã»ã¹ããå¿
è¦ã¯ããã¾ããã
// åãã¯ã©ã¹ã«å±ããä»ã®ã¤ã³ã¹ã¿ã³ã¹ã®ãã©ã¤ãã¼ããã£ã¼ã«ãã«
// ã¢ã¯ã»ã¹ãããã¨ãã§ãã¾ãã
return this.#values[0] - anotherColor.#values[0];
}
}
const red = new Color(255, 0, 0);
const crimson = new Color(220, 20, 60);
red.redDifference(crimson); // 35
ããããanotherColor
ã Color ã®ã¤ã³ã¹ã¿ã³ã¹ã§ãªãå ´åã#values
ã¯åå¨ããªããã¨ã«ãªãã¾ããï¼ä»ã®ã¯ã©ã¹ãåãååã® #values
ãã©ã¤ãã¼ããã£ã¼ã«ããæã£ã¦ããã¨ãã¦ããåããã¨ãåç
§ãã¦ããããã§ã¯ãªãã®ã§ãããã§ã¯ã¢ã¯ã»ã¹ãããã¨ãã§ãã¾ãããï¼åå¨ããªããã©ã¤ãã¼ãè¦ç´ ã«ã¢ã¯ã»ã¹ããã¨ãé常ã®ããããã£ã®ããã« undefined
ãè¿ãã®ã§ã¯ãªããã¨ã©ã¼ãçºçãã¾ãããªãã¸ã§ã¯ãã«ãã©ã¤ãã¼ããã£ã¼ã«ããåå¨ãããã©ãããããããã¨ã©ã¼ãå¦çããããã« try
/catch
ã使ç¨ããã«ã¢ã¯ã»ã¹ãããå ´åã¯ã in
æ¼ç®åã使ç¨ãããã¨ãã§ãã¾ãã
class Color {
#values;
constructor(r, g, b) {
this.#values = [r, g, b];
}
redDifference(anotherColor) {
if (!(#values in anotherColor)) {
throw new TypeError("Color instance expected");
}
return this.#values[0] - anotherColor.#values[0];
}
}
ã¡ã¢: ãã®ã¨ãã#
ã¯ç¹æ®ãªèå¥åæ§æã§ããããã£ã¼ã«ãåãæååã®ããã«ä½¿ç¨ãããã¨ã¯ã§ããªããã¨ã«çæãã¦ãã ããã"#values" in anotherColor
ã¯ããã©ã¤ãã¼ããã£ã¼ã«ãã§ã¯ãªããæåéã "#values"
ã¨ããããããã£åãæ¢ãã¦ãããã¨ã«ãªãã¾ãã
ãã©ã¤ãã¼ãè¦ç´ ã使ç¨ããã«ã¯ãããã¤ãã®å¶éãããã¾ããåãååãåä¸ã®ã¯ã©ã¹ã§ 2 å宣è¨ãããã¨ã¯ã§ãã¾ããããåé¤ãããã¨ãã§ãã¾ãããã©ã¡ããåæã®æ§æã¨ã©ã¼ã«ã¤ãªããã¾ãã
class BadIdeas {
#firstName;
#firstName; // syntax error occurs here
#lastName;
constructor() {
delete this.#lastName; // also a syntax error
}
}
ã¡ã½ãããã²ãã¿ã¼ãã»ãã¿ã¼ãåæ§ã«ãã©ã¤ãã¼ãã«ãããã¨ãã§ãã¾ããã¯ã©ã¹ãå é¨ã§è¡ãå¿ è¦ãããããã³ã¼ãã®ä»ã®é¨åããã¯å¼ã³åºããã¨ãã§ããªããããªè¤éãªãã®ãããå ´åã«æç¨ã§ãã
ä¾ãã°ãHTML ã®ã«ã¹ã¿ã è¦ç´ ã使ããã¯ãªãã¯ãããã¿ãããããããã¨ãã«ä½ãããè¤éãªåä½ãããããã¨ãæ³åãã¦ã¿ã¦ãã ãããããã«ãè¦ç´ ãã¯ãªãã¯ãããã¨ãã«èµ·ããããè¤éãªãã¨ã¯ããã®ã¯ã©ã¹ã«éå®ãããã¹ãã§ãJavaScript ã®ä»ã®é¨åãããã«ã¢ã¯ã»ã¹ãããã¨ã¯ãªãï¼ãããã¯ãããå¿ è¦ãããï¼ããã§ãã
class Counter extends HTMLElement {
#xValue = 0;
constructor() {
super();
this.onclick = this.#clicked.bind(this);
}
get #x() {
return this.#xValue;
}
set #x(value) {
this.#xValue = value;
window.requestAnimationFrame(this.#render.bind(this));
}
#clicked() {
this.#x++;
}
#render() {
this.textContent = this.#x.toString();
}
connectedCallback() {
this.#render();
}
}
customElements.define("num-counter", Counter);
ãã®å ´åãã»ã¨ãã©ãã¹ã¦ã®ãã£ã¼ã«ãã¨ã¡ã½ãããããã®ã¯ã©ã¹ã®ãã©ã¤ãã¼ãã¨ãªãã¾ãããããã£ã¦ããã®ã¯ã©ã¹ã¯ä»ã®ã³ã¼ãã«å¯¾ãã¦ãåºæ¬çã«çµã¿è¾¼ã¿ã® HTML è¦ç´ ã®ãããªã¤ã³ã¿ã¼ãã§ã¤ã¹ã表示ãã¦ãã¾ããããã°ã©ã ã®ä»ã®é¨å㯠Counter
ã®å
鍿§é ã«å½±é¿ãä¸ããåã¯ããã¾ããã
color.getRed()
㨠color.setRed()
ã¯ãè²ã®èµ¤æåã®å¤ãèªã¿æ¸ãã§ããããã«ãããã®ã§ããJava ã®ãããªè¨èªã®åºèº«è
ã§ããã°ããã®ãã¿ã¼ã³ã«ã¨ã¦ã馴æã¿ãããã¨æãã¾ããããããããããã£ã«åç´ã«ã¢ã¯ã»ã¹ããããã«ã¡ã½ããã使ç¨ãããã¨ã¯ãJavaScript ã§ã¯ã¾ã ãããã人éå·¥å¦çã§ãªãããã§ããã¢ã¯ã»ãµã¼ãã£ã¼ã«ãã使ãã°ããããããå®éã®ããããã£ãã§ãããã®ããã«ãä½ããæä½ãããã¨ãã§ããããã«ãªãã¾ãã
class Color {
constructor(r, g, b) {
this.values = [r, g, b];
}
get red() {
return this.values[0];
}
set red(value) {
this.values[0] = value;
}
}
const red = new Color(255, 0, 0);
red.red = 0;
console.log(red.red); // 0
ãªãã¸ã§ã¯ãã« red
ã¨ããããããã£ãããããã«è¦ãã¾ãããå®éã«ã¯ã¤ã³ã¹ã¿ã³ã¹ã«ãã®ãããªããããã£ã¯åå¨ãã¾ãããã¡ã½ãã㯠2 ã¤ããããã¾ããããæ¥é è¾ã« get
㨠set
ãã¤ãã¦ããã®ã§ãããããããããã£ã®ããã«æä½ãããã¨ãå¯è½ã«ãªã£ã¦ãã¾ãã
ãããã£ã¼ã«ãã«ã²ãã¿ã¼ã ããã£ã¦ã»ãã¿ã¼ããªãå ´åãããã¯äºå®ä¸èªã¿åãå°ç¨ã«ãªãã¾ãã
class Color {
constructor(r, g, b) {
this.values = [r, g, b];
}
get red() {
return this.values[0];
}
}
const red = new Color(255, 0, 0);
red.red = 0;
console.log(red.red); // 255
峿 ¼ã¢ã¼ãã®å ´åãred.red = 0
ã®è¡ã¯ã"Cannot set property red of #<Color> which has only a getter" ã¨ããåã¨ã©ã¼ãçºçãã¾ããå³å¯ã¢ã¼ã以å¤ã§ã¯ã代å
¥ã¯æé»ã«ç¡è¦ããã¾ãã
ãã©ã¤ãã¼ããã£ã¼ã«ãã«å¯¾ãã¦ãããªãã¯ãã£ã¼ã«ããããããã¹ã¦ã®ã¤ã³ã¹ã¿ã³ã¹ãããããã£ãæã¤ãã¨ãã§ãã¾ãããã£ã¼ã«ãã¯é常ãã³ã³ã¹ãã©ã¯ã¿ã¼ã®å¼æ°ã«ä¾åããªãããã«è¨è¨ããã¦ãã¾ãã
class MyClass {
luckyNumber = Math.random();
}
console.log(new MyClass().luckyNumber); // 0.5
console.log(new MyClass().luckyNumber); // 0.3
ãããªãã¯ãã£ã¼ã«ãã¯ãthis
ã«ããããã£ãå²ãå½ã¦ãã®ã¨ã»ã¼åãã§ããä¾ãã°ãä¸ã®ä¾ã夿ã§ãã¾ãã
class MyClass {
constructor() {
this.luckyNumber = Math.random();
}
}
éçããããã£
Date
ã®ä¾ã§ã¯ãç¾å¨ã®æ¥ä»ãè¿ã Date.now()
ã¡ã½ããã«ãééãã¦ãã¾ãããã®ã¡ã½ãã㯠Date ã®ã¤ã³ã¹ã¿ã³ã¹ã«å±ãããã®ã§ã¯ãªããã¯ã©ã¹ãã®ãã®ã«å±ãããã®ã§ããããããDateã¤ã³ã¹ã¿ã³ã¹ãæ±ãã¨ãã«æçãªã¡ã½ããã§ãããããã°ãã¼ãã«ãª DateNow()
颿°ã¨ãã¦å
¬éããã®ã§ã¯ãªããDate
ã¯ã©ã¹ã«æè¼ãã¦ãã¾ãã
ã¡ã¢: ã¦ã¼ãã£ãªãã£ã¡ã½ããã®æ¥é è¾ã«ããã®ã¡ã½ãããæ±ããã®ãä»ãããã¨ã¯ãåå空éåãã¨å¼ã°ããè¯ãç¿æ
£ã¨ããã¦ãã¾ããä¾ãã°ãJavaScript ã§ã¯ãå¤ãæ¥é è¾ã®ãªã parseInt()
ã¡ã½ããã«å ããå¾ãããæ°åãæ±ãããã®ã¡ã½ããã§ãããã¨ã示ãããã« Number.parseInt()
ã¡ã½ããã追å ããã¾ããã
éçããããã£ã¯ãã¯ã©ã¹ã®åã ã®ã¤ã³ã¹ã¿ã³ã¹ã§ã¯ãªããã¯ã©ã¹èªä½ã«å®ç¾©ãããã¯ã©ã¹æ©è½ã®ã°ã«ã¼ãã§ãããããã®æ©è½ã«ã¯ã次ã®ãããªãã®ãããã¾ãã
ã¾ãããã¹ã¦ã®ãã®ã«ã¯ã対å¿ãããã©ã¤ãã¼ããªãã®ãããã¾ããä¾ãã°ãColor
ã¯ã©ã¹ã§ã¯ãæå®ããã 3 ã¤ã®å¤ãæå¹ãª RGB å¤ã§ãããã©ããã調ã¹ãéçã¡ã½ããã使ãããã¨ãã§ãã¾ãã
class Color {
static isValid(r, g, b) {
return r >= 0 && r <= 255 && g >= 0 && g <= 255 && b >= 0 && b <= 255;
}
}
Color.isValid(255, 0, 0); // true
Color.isValid(1000, 0, 0); // false
éçããããã£ã¯ããã®ç¹ãé¤ãã¦ãã¤ã³ã¹ã¿ã³ã¹ã«å¯¾å¿ãããã®ã¨ã¨ã¦ãããä¼¼ã¦ãã¾ãã
static
ã®æ¥é è¾ãä»ãã¦ãããconsole.log(new Color(0, 0, 0).isValid); // undefined
ã¾ããéçåæåãããã¯ã¨ããç¹å¥ãªæ§é ããããããã¯ã¯ã©ã¹ãæåã«èªã¿è¾¼ã¾ããã¨ãã«å®è¡ãããã³ã¼ãã®ãããã¯ã§ãã
class MyClass {
static {
MyClass.myStaticProperty = "foo";
}
}
console.log(MyClass.myStaticProperty); // 'foo'
éçåæåãããã¯ã¯ãã¯ã©ã¹ã宣è¨ãããå¾ãããã«ã³ã¼ããå®è¡ããã®ã¨ã»ã¼åãã§ããå¯ä¸ã®éãã¯ãéçãªãã©ã¤ãã¼ãè¦ç´ ã«ã¢ã¯ã»ã¹ã§ãããã¨ã§ãã
æ¡å¼µã¨ç¶æ¿ã¯ã©ã¹ãããããéè¦ãªæ©è½ã¯ï¼ãã©ã¤ãã¼ããã£ã¼ã«ãã«ãã人éå·¥å¦çãªã«ãã»ã«åã«å ãã¦ï¼ãç¶æ¿ãã§ããããã¯ããããªãã¸ã§ã¯ããä»ã®ãªãã¸ã§ã¯ãã®åä½ã®å¤§é¨åããåãããªãããããé¨åã¯èªåèªèº«ã§ãã¸ãã¯ã䏿¸ããããæ¡å¼µãããã§ãããã¨ãæå³ãã¦ãã¾ãã
ä¾ãã°ãColor
ã¯ã©ã¹ãããã§éæåº¦ã«å¯¾å¿ããå¿
è¦ãåºã¦ããã¨ãã¾ããéæåº¦ãç¤ºãæ°ãããã£ã¼ã«ãã追å ããããªãããããã¾ããã
class Color {
#values;
constructor(r, g, b, a = 1) {
this.#values = [r, g, b, a];
}
get alpha() {
return this.#values[3];
}
set alpha(value) {
if (value < 0 || value > 1) {
throw new RangeError("Alpha value must be between 0 and 1");
}
this.#values[3] = value;
}
}
ããããããã§ã¯ãã¹ã¦ã®ã¤ã³ã¹ã¿ã³ã¹ â éæã§ãªã大é¨åï¼ã¢ã«ãã¡å¤ã 1 ã®ãã®ï¼ â ãä½åãªã¢ã«ãã¡å¤ãæããªããã°ãªããªããã¨ãæå³ãã¦ãããã¨ã¦ãæ´ç·´ããããã®ã§ã¯ããã¾ãããããã«ãæ©è½ãå¢ãç¶ããã¨ãColor
ã¯ã©ã¹ã¯ã¨ã¦ãè¥å¤§åããã¡ã³ããã³ã¹ãé£ãããªãã¾ãã
ãã®ä»£ããã«ããªãã¸ã§ã¯ãæåããã°ã©ãã³ã°ã§ã¯ããæ´¾çã¯ã©ã¹ãã使ãããã¨ã«ãªãã¾ããæ´¾çã¯ã©ã¹ã¯ã親ã¯ã©ã¹ã®ãã¹ã¦ã®ãããªãã¯ããããã£ã¸ã¢ã¯ã»ã¹ãããã¨ãã§ãã¾ããJavaScript ã§ã¯ãæ´¾çã¯ã©ã¹ã¯ extends
ç¯ã§å®£è¨ããããã®ã¯ã©ã¹ãã©ã®ã¯ã©ã¹ããæ¡å¼µããã¦ãããã示ãã¾ãã
class ColorWithAlpha extends Color {
#alpha;
constructor(r, g, b, a) {
super(r, g, b);
this.#alpha = a;
}
get alpha() {
return this.#alpha;
}
set alpha(value) {
if (value < 0 || value > 1) {
throw new RangeError("Alpha value must be between 0 and 1");
}
this.#alpha = value;
}
}
ããã«æ°ä»ããã¨ãããã¤ãããã¾ããæåã®ç¹ã¯ãã³ã³ã¹ãã©ã¯ã¿ã¼ã®ä¸ã§ãsuper(r, g, b)
ãå¼ã³åºãã¦ãããã¨ã§ããthis
ã«ã¢ã¯ã»ã¹ããåã« super()
ãå¼ã³åºããã¨ã¯è¨èªè¦ä»¶ã§ããsuper()
ã¯è¦ªã¯ã©ã¹ã®ã³ã³ã¹ãã©ã¯ã¿ã¼ãå¼ã³åºã㦠this
ãåæåãã¾ã â ããã§ã¯ this = new Color(r, g, b)
ã¨ã»ã¼åãæå³ã§ããsuper()
ã®åã«ã³ã¼ããç½®ããã¨ã¯ã§ãã¾ãããsuper()
ã®åã« this
ã«ã¢ã¯ã»ã¹ãããã¨ã¯ã§ãã¾ãããè¨èªä¸ãæªåæåã® this
ã«ã¢ã¯ã»ã¹ãããã¨ã¯ã§ããªãããã§ãã
親ã¯ã©ã¹ã this
ã夿´ããå¾ãæ´¾çã¯ã©ã¹ã¯èªåèªèº«ã§ãã¸ãã¯ã使ãããã¨ãã§ãã¾ããããã§ã¯ã#alpha
ã¨ãããã©ã¤ãã¼ããã£ã¼ã«ãã追å ããããã¨å¯¾è©±ããããã®ã²ãã¿ã¼/ã»ãã¿ã¼ã®ãã¢ãæä¾ãã¾ããã
æ´¾çã¯ã©ã¹ã¯ã親ã¯ã©ã¹ãããã¹ã¦ã®ã¡ã½ãããç¶æ¿ãã¾ããä¾ãã°ãColorWithAlpha
ã¯èªåèªèº«ã§get red()
ã¢ã¯ã»ãµã¼ã宣è¨ãã¦ãã¾ãããããã®åä½ã¯è¦ªã¯ã©ã¹ã§æå®ããã¦ããã®ã§ãred
ã«ã¢ã¯ã»ã¹ãããã¨ã¯ã§ãã¾ãã
const color = new ColorWithAlpha(255, 0, 0, 0.5);
console.log(color.red); // 255
æ´¾çã¯ã©ã¹ã¯è¦ªã¯ã©ã¹ã®ã¡ã½ããã䏿¸ããããã¨ãã§ãã¾ããä¾ãã°ããã¹ã¦ã®ã¯ã©ã¹ã¯ Object
ã¯ã©ã¹ãæé»çã«ç¶æ¿ãã¦ãããtoString()
ãªã©ãããã¤ãã®åºæ¬çãªã¡ã½ãããå®ç¾©ããã¦ãã¾ããããããåºæ¬ã® toString()
ã¡ã½ããã¯ãã»ã¨ãã©ã®å ´å [object Object]
ã表示ããããã使ãåæãæªãã§ãã
console.log(red.toString()); // [object Object]
代ããã«ããã®ã¯ã©ã¹ã¯è²ã® RGB å¤ã表示ããããã«ãªã¼ãã¼ã©ã¤ããããã¨ãã§ãã¾ãã
class Color {
#values;
// â¦
toString() {
return this.#values.join(", ");
}
}
console.log(new Color(255, 0, 0).toString()); // '255, 0, 0'
æ´¾çã¯ã©ã¹å
ã§ã¯ãsuper
ã使ç¨ãããã¨ã§ã親ã¯ã©ã¹ã®ã¡ã½ããã«ã¢ã¯ã»ã¹ãããã¨ãã§ãã¾ããããã«ãããå¼·åã¡ã½ãããæ§ç¯ããã³ã¼ãã®éè¤ãé¿ãããã¨ãã§ãã¾ãã
class ColorWithAlpha extends Color {
#alpha;
// â¦
toString() {
// 親ã¯ã©ã¹ã® toString() ãå¼ã³åºããè¿å¤ãæ§ç¯ãã
return `${super.toString()}, ${this.#alpha}`;
}
}
console.log(new ColorWithAlpha(255, 0, 0, 0.5).toString()); // '255, 0, 0, 0.5'
extends
ã使ç¨ããã¨ãéçã¡ã½ãããåæ§ã«ç¶æ¿ãããã®ã§ããªã¼ãã¼ã©ã¤ããæ¡å¼µãå¯è½ã§ãã
class ColorWithAlpha extends Color {
// ...
static isValid(r, g, b, a) {
// 親ã¯ã©ã¹ã® isValid() ãå¼ã³åºããè¿å¤ã«ããã¦æ§ç¯ãã
return super.isValid(r, g, b) && a >= 0 && a <= 1;
}
}
console.log(ColorWithAlpha.isValid(255, 0, 0, -1)); // false
æ´¾çã¯ã©ã¹ã¯è¦ªã¯ã©ã¹ã®ãã©ã¤ãã¼ããã£ã¼ã«ãã«ã¢ã¯ã»ã¹ã§ãã¾ãããããã¯ãJavaScript ã®ãã©ã¤ãã¼ããã£ã¼ã«ããããã¼ããã©ã¤ãã¼ããã§ãããã¨ã®ããä¸ã¤ã®éè¦ãªå´é¢ã§ãããã©ã¤ãã¼ããã£ã¼ã«ãã¯ãã¯ã©ã¹æ¬ä½ã«ã¹ã³ã¼ããããå¤é¨ã®ã³ã¼ãã«ã¢ã¯ã»ã¹ãããã¨ã¯ã§ãã¾ããã
class ColorWithAlpha extends Color {
log() {
console.log(this.#values); // SyntaxError: Private field '#values' must be declared in an enclosing class
}
}
ã¯ã©ã¹ã¯ 1 ã¤ã®ã¯ã©ã¹ããããæ¡å¼µã§ãã¾ãããããã«ããããã¤ã¤ã¢ã³ãåé¡ã®ãããªå¤éç¶æ¿ã«ãããåé¡ãé²ããã¨ãã§ãã¾ããããããJavaScriptã®åçãªæ§è³ªä¸ãã¯ã©ã¹æ§æãmixinsã«ãã£ã¦å¤éç¶æ¿ã®å¹æãå®ç¾ãããã¨ã¯å¯è½ã§ãã
æ´¾çã¯ã©ã¹ã®ã¤ã³ã¹ã¿ã³ã¹ã¯ãåºåºã¯ã©ã¹ã® instance of ã§ãããã
const color = new ColorWithAlpha(255, 0, 0, 0.5);
console.log(color instanceof Color); // true
console.log(color instanceof ColorWithAlpha); // true
ãªãã¯ã©ã¹ã
ãã®ã¬ã¤ãã¯ããã¾ã§å®ç¨çãªãã®ã§ãããç§ãã¡ã¯ã¯ã©ã¹ãã©ã®ããã«ä½¿ç¨ã§ãããã«ç¦ç¹ãå½ã¦ã¦ãã¾ããã1ã¤ã ãæªè§£æ±ºã®çåãããã¾ãããªãã¯ã©ã¹ã使ç¨ããã®ã§ããããï¼çãã¯ããå ´åã«ãããã§ãã
ã¯ã©ã¹ã¯ãã©ãã¤ã ãã¤ã¾ãã³ã¼ããæ´çããæ¹æ³ãå°å ¥ãã¾ããã¯ã©ã¹ã¯ãªãã¸ã§ã¯ãæåããã°ã©ãã³ã°ã®åºç¤ã§ãããç¶æ¿ã夿 æ§ï¼ç¹ã«ãµãã¿ã¤ãã³ã°ï¼ã¨ãã£ãæ¦å¿µã«åºã¥ãã¦æ§ç¯ããã¦ãã¾ããããããå¤ãã®äººã¯å²å¦çã«ãã種㮠OOP ã®å®è·µã«å対ãã¦ããããã®çµæã¯ã©ã¹ã使ç¨ãã¦ãã¾ããã
ä¾ãã°ãDate
ãªãã¸ã§ã¯ããæªåé«ãã®ã¯ã夿´å¯è½ã§ãããã¨ã§ãã
function incrementDay(date) {
return date.setDate(date.getDate() + 1);
}
const date = new Date(); // 2019-06-19
const newDay = incrementDay(date);
console.log(newDay); // 2019-06-20
// å¤ãæ¥ä»ãå¤ãã£ã¦ãã¾ãï¼ï¼
console.log(date); // 2019-06-20
å é¨ç¶æ ã夿´å¯è½ã§ãããã¨ã¯ããªãã¸ã§ã¯ãæåããã°ã©ãã³ã°ã®éè¦ãªè¦ç´ ã§ãããä¸è¦ä½ã®å¤å²ããªãå¦çãäºæãã¬å¯ä½ç¨ãæã¡ãããã°ã©ã ã®ä»ã®é¨åã®åä½ãå¤ãã¦ãã¾ããã¨ããããããã³ã¼ãã®æ¨è«ãå°é£ã«ãªããã¨ãå¤ãã®ã§ãã
ã³ã¼ããåå©ç¨ããããã«ãç§ãã¡ã¯é常ãã¯ã©ã¹ãæ¡å¼µããã¡ããããã¯å¤§ããªç¶æ¿ãã¿ã¼ã³ã®é層ãçã¿åºãå¯è½æ§ãããã¾ãã
ããããããã¯ã©ã¹ãä»ã®ã¯ã©ã¹ã 1 ã¤ã ãããæ¡å¼µã§ããªãå ´åãç¶æ¿ããããã«è¨è¿°ããã®ãé£ãããã¨ãããããã¾ããè¤æ°ã®ã¯ã©ã¹ã®æ¯ãèããæ¬²ããå ´åãããããã¾ããããã¯ãJava ã§ã¯ã¤ã³ã¿ã¼ãã§ã¤ã¹ã§ãJavaScript ã§ã¯ããã¯ã¹ã¤ã³ã§å®ç¾ãããã¨ãã§ãã¾ããããããçµå±ã®ã¨ãããã¾ã ã¨ã¦ã便å©ã¨ã¯è¨ãã¾ããã
䏿¹ãã¯ã©ã¹ã¯ãã³ã¼ããããé«ãã¬ãã«ã§æ´çããããã®ã¨ã¦ãå¼·åãªææ®µã§ããä¾ãã°ãColor
ã¯ã©ã¹ããªããã°ãã¦ã¼ãã£ãªãã£é¢æ°ãä½ååã使ããªããã°ãªããªãããããã¾ããã
function isRed(color) {
return color.red === 255;
}
function isValidColor(color) {
return (
color.red >= 0 &&
color.red <= 255 &&
color.green >= 0 &&
color.green <= 255 &&
color.blue >= 0 &&
color.blue <= 255
);
}
// ...
ããããã¯ã©ã¹ã使ãã°ããã¹ã¦ Color
ã¨ããåå空éã®ä¸ã«éãããã¨ãã§ããã®ã§ãèªã¿ããããåä¸ãã¾ããã¾ãããã©ã¤ãã¼ããã£ã¼ã«ããå°å
¥ãããã¨ã§ãç¹å®ã®ãã¼ã¿ã䏿µã®ã¦ã¼ã¶ã¼ããé ããã¨ãã§ããã¯ãªã¼ã³ãª API ã使ãããã¨ãã§ãã¾ãã
ä¸è¬çã«ãç¬èªã®å é¨ãã¼ã¿ãæ ¼ç´ããå¤ãã®åä½ãå ¬éãããªãã¸ã§ã¯ãã使ãããå ´åã«ã¯ãã¯ã©ã¹ã®ä½¿ç¨ãæ¤è¨ãã¹ãã§ããããJavaScript ã®çµã¿è¾¼ã¿ã¯ã©ã¹ãä¾ã«ã¨ãã¨ã以ä¸ã®ããã«ãªãã¾ãã
Map
ããã³ Set
ã¯ã©ã¹ã¯ãè¦ç´ ã®éåãä¿æãã get()
, set()
, has()
, ãªã©ã使ç¨ãã¦ãã¼ã«ãã£ã¦è¦ç´ ã«ã¢ã¯ã»ã¹ãããã¨ãã§ãã¾ããDate
ã¯ã©ã¹ã¯æ¥æã UNIX ã¿ã¤ã ã¹ã¿ã³ãï¼æ°å¤ï¼ã§ä¿æããæ¥æã®åã
ã®é¨åãæ´å½¢ãæ´æ°ãèªã¿åããããã¨ãã§ãã¾ããError
ã¯ã©ã¹ã¯ãä¾å¤ã«é¢ããå
·ä½çãªæ
å ±ãä¾ãã°ã¨ã©ã¼ã¡ãã»ã¼ã¸ãã¹ã¿ãã¯ãã¬ã¼ã¹ãåå ãªã©ãä¿æãã¾ããããã¯ãè±å¯ãªç¶æ¿æ§é ãæã¤ããã¤ãã®ã¯ã©ã¹ã® 1 ã¤ã§ããTypeError
ã ReferenceError
ãªã©ãError
ãç¶æ¿ããè¤æ°ã®çµã¿è¾¼ã¿ã¯ã©ã¹ãããã¾ããã¨ã©ã¼ã®å ´åããã®ç¶æ¿ã«ãã£ã¦ã¨ã©ã¼ã®æå³ãçµãè¾¼ããã¨ãã§ãã¾ããããããã®ã¯ã©ã¹ãåºæã®ã¨ã©ã¼ã®ç¨®é¡ã表ãã®ã§ãinstanceof
ã§å®¹æã«èª¿ã¹ããã¨ãã§ãã¾ããJavaScript ã«ã¯ãã³ã¼ããæ£è¦ã®ãªãã¸ã§ã¯ãæåã§æ´çããä»çµã¿ãããã¾ãããããã使ç¨ãããã©ãããã©ã®ããã«ä½¿ç¨ãããã¯ããã¹ã¦ããã°ã©ãã¼ã®è£éã«å§ãããã¦ãã¾ãã
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