JavaScriptã®ã¯ã©ã¹ïŒclassïŒãçè§£ãã
å€ãã®ãªããžã§ã¯ãæåããã°ã©ãã³ã°èšèªã«åãã£ãŠãããã¯ã©ã¹ãæ§æããè¿å¹ŽJavaScriptã«ã远å ãããŸãããä»åã¯JavaScriptã«ãããã¯ã©ã¹ïŒclassïŒæ§æã«ã€ããŠè§£èª¬ããŠãããŸããå€ãã®ãªããžã§ã¯ãæåããã°ã©ãã³ã°èšèªã«ã¯æšæºçãªæ©èœãšããŠãã¯ã©ã¹ãæ§æãåãã£ãŠããŸãã
JavaScriptã¯é·ããã¯ã©ã¹æ§æãååšããŸããã§ããããECMASCript2015ïŒ2015幎çã®JavaScriptã®ä»æ§ïŒã§ã¯ã©ã¹æ§æã远å ãããŸããã
ä»åã¯ãJavaScriptã®ã¯ã©ã¹ïŒclassïŒæ§æã«ã€ããŠè§£èª¬ããŠãããŸãã
远å ãããJavaScriptã®ã¯ã©ã¹ïŒclassïŒæ§æ
ãªããžã§ã¯ãæåãšåŒã°ããããã°ã©ãã³ã°èšèªã«ã€ããŠã®æŠå¿µããããŸãã
ãªããžã§ã¯ãæåãšã¯ããã°ã©ã ãçŸå®ã®ã¢ãã®ããã«æ§æããæåã®ããšã§ãã
ãã®ãªããžã§ã¯ãæåã®èšèªãšããŠäœãããããã°ã©ãã³ã°èšèªã«ã¯ãå€ãã®å Žåã¯ã©ã¹ãšããæ©èœãåãã£ãŠããŸãã
JavaScriptã¯ããªããžã§ã¯ãæåã®ããã°ã©ãã³ã°èšèªã§ãããªããããã®ã¯ã©ã¹æ©èœãé·ããå®è£
ãããŠããªããçããèšèªã§ããã
ãããè¿å¹ŽãJavaScriptã®æ°ããæšæºãæ¹èšãããããšã«ãããJavaScriptã«ãã¯ã©ã¹æ©èœãå®è£
ãããŸããã
ã¯ã©ã¹ïŒclassïŒãšã¯
å€ãã®ãªããžã§ã¯ãæåããã°ã©ãã³ã°èšèªã«åããã¯ã©ã¹ïŒclassïŒãšããæŠå¿µã«ã€ããŠç޹ä»ããŸãã
ã¯ã©ã¹ïŒclassïŒãšã¯ã端çã«ããã°ã¢ãã®èšèšæžã§ãã
å
ã»ã©ãªããžã§ã¯ãæåãšã¯ãããã°ã©ãã³ã°ãçŸå®ã®ã¢ãã®ããã«æ§æãããã®ã ãšè§£èª¬ããŸããããã¯ã©ã¹ãšã¯ãã®ã¢ãã®ããã«æ§é ããéã®ãã¢ããã®ãã®ã®èšèšæžã«ããããŸãã
èšèãšããŠã¯ã以äžã®ãããªæå³ã®å¯Ÿå¿è¡šã«ãªããŸãã
- ãªããžã§ã¯ã = ã¢ã
- ã¯ã©ã¹ = ã¢ãïŒãªããžã§ã¯ãïŒã®èšèšæž
ã¯ã©ã¹ã¯ã¢ãïŒãªããžã§ã¯ãïŒã®èšèšæžã§ãããããå€ãã®ããã°ã©ãã³ã°èšèªã«ãããŠã¢ãïŒãªããžã§ã¯ãïŒãäœæããéã«å¿
èŠãªãã®ãšããŠå®çŸ©ãããããšãå€ãã§ãã
ãªããJavaScriptãHTMLã®ã¿ããè§Šããããšã®ãªãæ¹ã¯ãããã§è§£èª¬ããclassãHTMLã®class屿§ãšã¯ãŸã£ããç°ãªããã®ã§ããããšã«æ°ãä»ããŠãã ããã
JavaScriptãçšããŠHTMLã®class屿§ã®ååŸã倿Žã远å ãåé€ãªã©ãè¡ãããšããããŸããããããã£ãHTMLãæäœããéã«ç»å Žããclassãšããèšèã¯ãããã°ã©ãã³ã°èšèªã®æ§æãšããŠã®classãšã¯é¢ä¿ã®ãªãæŠå¿µã§ãã
JavaScriptã®ã¯ã©ã¹ïŒclassïŒã®ç¹åŸŽ
JavaScriptã«ãããŠãã¯ã©ã¹ããªããžã§ã¯ãæåã«ãããã¢ãïŒãªããžã§ã¯ãïŒã®èšèšæžã§ããããšã«ã€ããŠã¯ééããããŸããã
å€ãã®ããã°ã©ãã³ã°èšèªãšåæ§ã®ã³ã³ã¹ãã©ã¯ã¿ãç¶æ¿ãšãã£ãæŠå¿µãåããŠããŸãã
ããããç¹æ®ãªã®ã¯ãã®æžãæ¹ã§ããã¯ã©ã¹å€æ°ã¯ã³ã³ã¹ãã©ã¯ã¿ã®äžã§ã®ã¿èšèŒã§ããããšããã¯ã©ã¹çŽäžã«ã¯function(ã¡ãœããã颿°)ã®ã¿ããé
眮ã§ããªãããšåœãæ
£ããªããšå°ã
æžãã®ãå°é£ãªã«ãŒã«ãããã€ãååšããŠããŸãã
JavaScriptã®ã¯ã©ã¹ïŒclassïŒã®äœãæ¹
ãŸã泚æãã¹ãããšããããŸãã
JavaScriptã«ãããclassã¯ãECMAScript2015 ãšããè¿å¹Žã®æ°ããJavaScriptã®æšæºãšããŠçµã¿èŸŒãŸããæ§æã§ãã
ãã®ããInternetExplolerãªã©äžéšã®ãã©ãŠã¶ããã©ãŠã¶ã®ããŒãžã§ã³ã«ãã£ãŠã¯ããã®æ°ããæšæºãžã®å¯Ÿå¿ãè¡ããããããããã§ç޹ä»ããã³ãŒããæ©èœããªãå¯èœæ§ããããŸãã
ãããæ°ããæšæºã®JavaScriptã®æ©èœãšããŠçµã¿èŸŒãŸããŠãããåŸã
ã«æªå¯Ÿå¿ã®ãã©ãŠã¶ãå°ãªããªã£ãŠãããããçŸåšJavaScriptãåŠç¿ããŠããæ¹ã¯èŠããŠãããŠæã¯ãªãã§ãããã
ããŠã以äžã®ããšã念é ã«èžãŸããäžã§è§£èª¬ãé²ããŠãããŸãã
JavaScriptã«ããã颿°ã®å®çŸ©ã«ã¯ã2ã€ã®æ¹æ³ããããŸããã
ã²ãšã€ã颿°å®£èšã
ããã²ãšã€ã颿°åŒã§ãã
ãããšåæ§ã«ãJavaScriptã®ã¯ã©ã¹ã®å®çŸ©ã«ã2ã€ã®æ¹æ³ããããŸããã¯ã©ã¹å®£èšãšã¯ã©ã¹åŒã§ãã
ã¯ã©ã¹å®£èš
ã¯ã©ã¹å®£èšã«ããã¯ã©ã¹ã®å®çŸ©ã¯ä»¥äžã®ããã«è¡ããŸãã
class Fooclass {
// ...ã¯ã©ã¹ã®å
容ãããã§å®çŸ©ãã
}
颿°å®£èšæã«çºçãããã€ã¹ãã£ã³ã°ïŒå·»ãäžãïŒã¯ãã¯ã©ã¹å®£èšæã«ã¯çºçããŸããã
ãã®ãããã¯ã©ã¹ã䜿çšãããå Žåã¯å¿
ãã¯ã©ã¹ã䜿çšããåã«ãã¯ã©ã¹å®£èšãè¡ãããšãå¿
èŠãšãªããŸãã
ã¯ã©ã¹åŒ
ã¯ã©ã¹åŒã«ããã¯ã©ã¹ã®å®çŸ©ã¯ä»¥äžã®ããã«è¡ããŸãã
const fooclass = class {
// ...ã¯ã©ã¹ã®å
容ãããã§å®çŸ©ãã
}
ã¯ã©ã¹åŒã®å Žåããã®åã®éããåŒãšããŠã¯ã©ã¹ãå®çŸ©ããããšãã§ããŸãã
倿°ã«ä»£å
¥ããclassåŒã¯ç¡åã¯ã©ã¹ã§ãååã€ãã¯ã©ã¹ã§ãå¯èœã§ãã
ã³ã³ã¹ãã©ã¯ã¿ïŒconstructorïŒãšã¡ãœããå®çŸ©
ã¯ã©ã¹å®£èšãã¯ã©ã¹åŒã§ã¯ã©ã¹ãå®çŸ©ããéããã®ã¯ã©ã¹ã®äžèº«ãã©ã®ãããªãã®ãªã®ãã«ã€ããŠãJavaScriptã§ã¯äž»ã«ã³ã³ã¹ãã©ã¯ã¿ïŒconstructorïŒãšã¡ãœããã§å®çŸ©ããŠãããŸãã
ã³ã³ã¹ãã©ã¯ã¿ã¯æ¬¡ã®ããã«æžããŸãã
const fooclass = class {
constructor(x, y) { /* ã³ã³ã¹ãã©ã¯ã¿ */
this.x = x
this.y = y
}
}
constructor()ãšããååã®ã¡ãœãããã³ã³ã¹ãã©ã¯ã¿ãšåŒã°ãããã®ã§ãã
ã³ã³ã¹ãã©ã¯ã¿ã¯å®çŸ©ããã¯ã©ã¹ãããªããžã§ã¯ããçæããåæåããéã«å®è¡ãããç¹æ®ãªåæåçšã¡ãœããã§ãã
constructor()å
ã§this.xã«constructor()ã®ç¬¬äžåŒæ°xã代å
¥ããŠããŸãããããã¯èªèº«ã®ããããã£xã«æå®ãããåŒæ°ã®å€ãèšå®ãããšããæå³ã«ãªããŸãã
ããã«ããããªããžã§ã¯ããèªãã®ããããã£ãšãã®å€ãèšå®ã§ããããã«ãªããŸãã
ãŸããã³ã³ã¹ãã©ã¯ã¿ãšã¯å¥ã«éåžžã®ã¡ãœãããã¯ã©ã¹ã®å
容ãšããŠå®çŸ©ããããšãå¯èœã§ãã
ã³ã³ã¹ãã©ã¯ã¿ã®ä»ã«ã¡ãœãããå®çŸ©ããå Žåã以äžã®ãããªã³ãŒãã«ãªããŸãã
const fooclass = class {
constructor(x, y) { /* ã³ã³ã¹ãã©ã¯ã¿ */
this.x = x
this.y = y
}
calc() { /* ã¡ãœãã */
return this.x + this.y /* x ãš y ãè¶³ããå€ãè¿åŽãã */
}
}
äžèšã³ãŒãã®calc()ãã¯ã©ã¹å
ã§ã®ã¡ãœããå®çŸ©ã«ãªããŸãã
ããã§ã¯ãfooclassã¯ã©ã¹ã®ãããã㣠x ãš y ãè¶³ããå€ãè¿ãã¡ãœãããšããŠå®çŸ©ããŠããŸãã
ãã®ããã«ã¯ã©ã¹å
ã§ã³ã³ã¹ãã©ã¯ã¿ãšã¡ãœãããå®çŸ©ããããšã§ãã¯ã©ã¹ãããªããžã§ã¯ããäœæããéã«ãå®çŸ©ããã³ã³ã¹ãã©ã¯ã¿ã®ããããã£ãšãã¡ãœããã䜿çšããããšãã§ããããã«ãªããŸãã
JavaScriptã®ã¯ã©ã¹ïŒclassïŒã®äœ¿ãæ¹
ã¯ã©ã¹ã¯ã¯ã©ã¹å®£èšãã¯ã©ã¹åŒã«ãã£ãŠå®çŸ©ããã ãã§ã¯åœ¹ã«ç«ã¡ãŸããã
ã¯ã©ã¹ã¯ãªããžã§ã¯ãæåã«ãããã¢ãã®èšèšæžã§ããã圹å²ã¯èšèšããã¢ããçæããããšã§ãã
ã€ãŸãåºæ¬çã«ã¯ããªããžã§ã¯ããäœæããŠã¯ãããŠãã¯ã©ã¹ãšããæŠå¿µã圹ã«ç«ã€ãšãããã§ãããã
ïŒ1ïŒãªããžã§ã¯ãã®äœæïŒnewïŒ
ã¯ã©ã¹ãããã¯ã©ã¹ã®ã€ã³ã¹ã¿ã³ã¹ã§ãããªããžã§ã¯ããäœæããããã«ã¯newæŒç®åãçšããå¿
èŠããããŸãã
newæŒç®åãçšãããªããžã§ã¯ãã®äœæã¯ã次ã®ããã«è¡ããŸãã
var foo1 = new fooclass(10, 20)
ããã§fooclassã®ã€ã³ã¹ã¿ã³ã¹ïŒãªããžã§ã¯ãïŒãäœæããã倿°foo1ã«ä»£å
¥ãããŸãããnewæŒç®å ïŒ ã¯ã©ã¹ ïŒ æ¬åŒ§ã§ãªããžã§ã¯ããäœæãããã®ã§ãã
ãã®éã«ç»å Žããæ¬åŒ§ã¯ãã¯ã©ã¹å®çŸ©ã®éã«ç»å Žããã³ã³ã¹ãã©ã¯ã¿ïŒconstructorïŒã«æž¡ãããåŒæ°ã瀺ããŸãã
ïŒ2ïŒããããã£ã®ååŸãšèšå®
ã¯ã©ã¹ã®ããããã£ã¯ä»¥äžã®ããã«åŒã³åºãããšãå¯èœã§ã
var hooclass = class {
constructor(z) {
this.z = z
}
get getZ() {
/* getæ§æ */
return this.z
}
}
var hoo = new hooclass(20)
var val = hoo.getZ
console.log(val) /* 20ãåºåããã */
ã¯ã©ã¹å®çŸ©ã®äžã«getãšããæ§æããããŸãã
ãã®getæ§æãçšããããšã§ããªããžã§ã¯ãäœæåŸãgetæ§æã§æå®ããã¡ãœããã®è¿åŽå€ãååŸã§ããŸãã
ãŸãå€ãååŸããgetæ§æã«å¯Ÿããå€ãèšå®ããsetæ§æãšãããã®ãååšããŸãã
var hooclass = class {
constructor(z) {
this.z = z
}
get getZ() {
return this.z
}
set setZ(z) {
/* setæ§æ */
this.z = z
}
}
var hoo = new hooclass(20)
hoo.setZ = 100 /* ããããã£ã«å€ãèšå®ãã */
var val = hoo.getZ
console.log(val) /* 100ãåºåããã */
setæ§æã§æå®ãããäžèšã³ãŒãäžã® valueOfZ() ã¡ãœããã䜿çšãããšãã€ã³ã¹ã¿ã³ã¹äœæåŸã«ããã®ã€ã³ã¹ã¿ã³ã¹ã®ããããã£ã«å€ãèšå®ããããšãã§ããŸãã
ããã§ã¯ã¯ãããã³ã³ã¹ãã©ã¯ã¿ã«ãããããã㣠z ã 20 ã§åæåããã€ã³ã¹ã¿ã³ã¹ããsetæ§æã§æå®ããã¡ãœãã valueOfZ ã« 100 ãæž¡ãããšã§ããããã㣠z ã 100 ã«åèšå®ããŠããŸãã
ïŒ3ïŒç¶æ¿
ãªããžã§ã¯ãæåã«ããã代衚çãªæŠå¿µã®ã²ãšã€ã«ç¶æ¿ããããŸãã
ç¶æ¿ãšã¯ãã¯ã©ã¹éã«èŠªåé¢ä¿ãäœãåºãã芪ã®ã¯ã©ã¹ãä¿æããã¡ãœãããããããã£ã䜿çšã§ããããã«ãããã®ã§ãã
ç¶æ¿ãè¡ãã«ã¯ extends ãå©çšããŸãã
var hooclass = class {
constructor(z) {
this.z = z
}
get getZ() {
return this.z
}
set setZ(z) {
/* setæ§æ */
this.z = z
}
}
/* hooclassã®ç¶æ¿ */
var taaclass = class extends hooclass {
constructor(z, num) {
super(z) /* 芪ã¯ã©ã¹ã®ã³ã³ã¹ãã©ã¯ã¿ */
this.num = num
}
calc() {
return this.z * this.num
}
}
var taa = new taaclass(20, 3)
taa.setZ = 100 /* 芪ã¯ã©ã¹ã®ã¡ãœããã§ããããã£ã«å€ãèšå®ãã */
console.log(taa.calc()) /* 300ãåºåããã */
ã¯ã©ã¹äœææãäžèšã³ãŒãã®ããã« extends + âç¶æ¿ãããã¯ã©ã¹åâ ã§èŠªã¯ã©ã¹ãæå®ããããšãåºæ¥ãŸãã
ç¶æ¿ãã芪ã¯ã©ã¹ã®ããããã£ãåæåããããã«ãconstructor ã«ã¯èŠªã¯ã©ã¹ã®ã³ã³ã¹ãã©ã¯ã¿ã瀺ã super() ã®åŒæ°ã«ãåæåãããå€ãæå®ããå¿
èŠããããŸãã
ïŒ4ïŒéçã¡ãœãã
ã¯ã©ã¹ã®ã€ã³ã¹ã¿ã³ã¹ã§ã¯ãªããã¯ã©ã¹ãã®ãã®ããåŒã³åºããè¡ãéçã¡ãœãããšãããã®ãååšããŸãã
var hooclass = class {
static writeDescription() {
/* staticãã€ããããšã§éçã¡ãœãããå®çŸ©ã§ãã */
return 'ãããéçã¡ãœããã§ãã'
}
}
console.log(hooclass.writeDescription()) // éçã¡ãœããå®è¡
äžèšã³ãŒãäžã®writeDescription()ã¡ãœããã®å®çŸ©ç®æãèŠãŠã¿ãŸãããã
ã¡ãœããåã®åã« static ãšãããŸãã
ããã¯ãããã§å®çŸ©ããã¡ãœãããéçã¡ãœããã§ããããšã瀺ããŸãã
éçã¡ãœããã¯ã¯ã©ã¹ã®ã€ã³ã¹ã¿ã³ã¹ã§ã¯ãªããã¯ã©ã¹ãã®ãã®ããåŒã³åºããè¡ããããã¯ã©ã¹å.éçã¡ãœããå() ã®ã¿ã§å®è¡ããããšãã§ããŸãã
ãŸãšã
JavaScriptã§æ°ãã远å ãããclassæ§æãçšããããšã§ããªããžã§ã¯ãæåãšããŠããã«å¯èªæ§ã®é«ãã³ãŒããæžãããšãã§ããããã«ãªããŸãã
ã¯ã©ã¹åŒã»ã¯ã©ã¹å®£èšã«ããã¯ã©ã¹å®çŸ©ãšãnewæŒç®åã«ããã¯ã©ã¹ã®ã€ã³ã¹ã¿ã³ã¹ïŒãªããžã§ã¯ãïŒã®äœæã芪ã¯ã©ã¹ã®ç¶æ¿ãéçã¡ãœãããããŸã掻çšããŠãããé«ãå¯èªæ§ã®ã³ãŒããå®è£
ããŠãããŸãããã












