JavaScriptã®ãããªãéçºã«ãããWebéçºè
ãæ¯æŽããã¹ã¯ãªããèšèªãšããŠå°é ããã¯ã©ã€ã¢ã³ãåŽãéçºãã匷åãªããŒã«ãšãªãããŠãŒã¶ãŒã®ãã©ãŠã¶ã§ããŒãžã®å©äŸ¿æ§ãšå¯Ÿè©±æ§ãçŽæ¥æäŸããŸãã
ç°å¢ãšç®æšã®ç¹æ®æ§ã«ãããJavaScriptã¯éåžžã®ããã°ã©ãã³ã°èšèªãšã¯ç°ãªããå€ãã®æ©èœãåããŠããŸãããåªããã¯ãã¹ãã©ãŠã¶ãŒã³ãŒããäœæããããšã¯éåžžã«å°é£ã§ãã
JavaScriptã³ãŒããæ°æ¥ä»¥äžæžããããã°ã©ããŒã®ã»ãšãã©ã¯ããããã®æ©èœã«åºãããããšæããŸãã ãã®ãããã¯ã®ç®çã¯ãæ°ããäœããçºèŠããããšã§ã¯ãªãããããã®æ©èœããæã§ã
ãæ¬ ç¹ãã§èª¬æããŠãå©ç¹ããäœæããããšã§ãã
ãã®ãããã¯ã§ã¯ä»¥äžãæ€èšããŸãã
- ç絡
- ãããã¿ã€ãã³ã°
- å®è¡ã³ã³ããã¹ã
ãŸããã
ãã¡ãããèè
ãšããŠãJavaScriptã®è±å¯ãªå¯èœæ§ããã¹ãŠèª¬æããããšæããŸãã ããããç§ããããããããšãããšãèšäºã¯èšå€§ãªæ°ã®ããŒãžã«ãŸããããå€ãã®åå¿è
éçºè
ã¯ãã¹ãŠã®æ
å ±ãæãåºããªããªããŸãã ãããã£ãŠãåŒçšãããŠããäŸã¯åçŽãããããã«æããããããã¯ã¯å®å
šã«ã¯é瀺ãããŠããŸããã ãããããããã®æ©èœã«ãŸã æ
£ããŠããªã人ãããã§ã«æ
£ããŠãã人ããå®éã«ã¯ãã¹ãŠãåæ©çã§ããããšãçè§£ããã®ã«åœ¹ç«ã€ããšãé¡ã£ãŠããŸãã
ééããŸãã¯ããããã®ç°åžžãªç¯å²ã
ã䟿å©ãªãã®ïŒã-ããã2ã€ã®èšèã¯è¡šçŸã§ããŸã
JavaScriptã§ã®ã¯ããŒãžã£ãšãã®å®è£
ã«å¯Ÿããç§ã®å§¿å¢ã
ã¯ããŒãžã£ãŒã®æ¬è³ªã¯ç°¡åã§ãã
颿°å
ã§ã¯ã颿°ã宣èšãããå Žæã§å©çšå¯èœãªãã¹ãŠã®å€æ°ã䜿çšã§ããŸã ã
ã¯ããŒãžã£ã®æŠå¿µã¯åçŽã§ãããå®éã«ã¯ãç¹å®ã®å Žåã®åäœã«ã€ããŠå€ãã®ãããŸããªç¹ããããŸãã æåã«ã倿°ã®å®£èšã®åºæ¬ãã€ãŸãã
JavaScriptã®å€æ°ã¯varããŒã¯ãŒãã䜿çšããŠå®£èšããã ããæãåºããŸãããã
var title = "Hello World"; alert(title);
ã³ãŒããå®è¡ãããšãæåŸ
ã©ããã«ã
Hello World ããšããããã¹ãã衚瀺ãããŸãã äœãèµ·ãã£ãŠãããã®æ¬è³ªã¯åçŽã§ã-ã°ããŒãã«å€æ°ã®
ã¿ã€ãã«ãå€ã
Hello World ãã§äœæãããããã¯
alertã䜿çšããŠãŠãŒã¶ãŒã«è¡šç€ºãããŸãã ãã®äŸã§ã¯ã
varããŒã¯ãŒããçç¥ããŠããã°ããŒãã«ã³ã³ããã¹ãã®ããã«ã³ãŒãã¯æ£åžžã«æ©èœããŸãã ããããããã«ã€ããŠã¯åŸã§ã
次ã«ãåã倿°ã宣èšããããšããŸããããã§ã«é¢æ°å
ã«ãããŸãã
function example (){ var title = "Hello World"; } alert(title);
ã³ãŒããå®è¡ããçµæãã
'title' is undefined ã-ã
倿° 'title'ã宣èšãããŠããŸãã ããšãããšã©ãŒãçæã
ããŸãã ããã¯ã倿°ã®ããŒã«ã«ã¹ã³ãŒãã®ã¡ã«ããºã ã«ãããã®ã§ãã
颿°å
ã§å®£èšããããã¹ãŠã®å€æ°ã¯ããŒã«ã«ã§ããããã®é¢æ°å
ã§ã®ã¿è¡šç€ºãããŸã ã ãŸãã¯ãåçŽã«ïŒé¢æ°å
ã§å€æ°ã宣èšããå Žåããã®é¢æ°ã®å€éšã§ã¯ãã®å€æ°ã«ã¢ã¯ã»ã¹ã§ããŸããã
ç¢æã
Hello World ãã衚瀺ããã«ã¯ãåŒã³åºããã颿°å
ã§
ã¢ã©ãŒããåŒã³åºãå¿
èŠããããŸãã
function example(){ var title = "Hello World"; alert(title); } example();
ãŸãã¯ã颿°ããå€ãè¿ããŸãã
function example(){ var title = "Hello World"; return title; } alert(example());
ãããã®äŸã¯ãã¹ãŠæçœã ãšæããŸã-ãã®ãããªåäœã¯ãã»ãŒãã¹ãŠã®ããã°ã©ãã³ã°èšèªã§å®è£
ãããŠããŸãã ããã§ã¯ãå®è£
ãä»ã®èšèªãšéåžžã«ç°ãªããã®ã«ããJavaScriptã®ã¯ããŒãžã£ãŒã®ç¹æ§ã¯äœã§ããïŒ
äž»ãªéãã¯ãJavaScriptã§ã¯é¢æ°ãä»ã®é¢æ°å
ã§å®£èšã§ããJavaScriptã®é¢æ°ã¯ãªããžã§ã¯ãã§ãããšããããšã§ãïŒ ããã«ãããéåžžã®ãªããžã§ã¯ããšåãã¢ã¯ã·ã§ã³ãå®è¡ã§ããŸã-ååšã®ç¢ºèªã倿°ãžã®å²ãåœãŠãããããã£ã®è¿œå ãã¡ãœããã®åŒã³åºããå¥ã®é¢æ°ã®çµæãšããŠé¢æ°ãªããžã§ã¯ããè¿ãïŒ
颿°ã¯ãªããžã§ã¯ãã§ããããã倿°ã®ã¹ã³ãŒãã¯é¢æ°ã«ãé©çšãããããšãæå³ããŸããå¥ã®é¢æ°å
ã§å®£èšããã颿°ã¯ã宣èšãããå Žæã§ã®ã¿è¡šç€ºãããŸã
function A(){ function B(){ alert("Hello World"); } } B();
倿°ã䜿çšããäŸã®ããã«ãã³ãŒããå®è¡ãããšã倿°
Bã宣èšã
ããŠããªããšãããšã©ãŒãçæãããŸãã 颿°
Aå
ã®å®£èšã®çŽåŸã«é¢æ°
BãåŒã³åºãã颿°
AèªäœãåŒã³åºããšã倧äºãªã¡ãã»ãŒãžã
Hello World ãã衚瀺ãããŸã
function A(){ function B(){ alert("Hello World"); } B(); } A();
ããã§ã¯ãã»ãšãã©ã®åå¿è
ãJavaScriptã«ã€ããŠäœãåŠã¶ãã«ã€ããŠèª¬æãå§ããŸãããã倿°ãã©ãããæ¥ãã®ãã倿ããŸãã äžèšã®ããã«ã倿°ã¯
varããŒã¯ãŒãã䜿çšããŠå®£èšããå¿
èŠããããŸãã
var title = 'external'; function example(){ var title = 'internal'; alert(title); } example(); alert(title);
ãã®äŸã§ã¯ã
ã¿ã€ãã«å€æ°ã2å宣èšãããŠããŸãã1åç®ã¯ã°ããŒãã«ã«ã2åç®ã¯é¢æ°å
ã§ã
ãµã³ãã«é¢æ°å
ã§ã¯ã
varããŒã¯ãŒãã䜿çšããŠ
ã¿ã€ãã«å€æ°ã宣èšããããããããŒã«ã«ã«ãªãã颿°ã®åã«å®£èšããã
ã¿ã€ãã«å€æ°ãšã¯é¢ä¿ãããŸããã ã³ãŒãå®è¡ã®çµæãæåã«ã
å
éš ãïŒå
éšå€æ°ïŒã衚瀺ãããæ¬¡ã«ã
å€éš ãïŒã°ããŒãã«å€æ°ïŒã衚瀺ãããŸãã
æåå
var title = 'internal'ãã
varããŒã¯ãŒããåé€ãããšãã³ãŒããå®è¡ããçµæãã¡ãã»ãŒãž "
internal "ã2åååŸãããŸãã ããã¯ã颿°ãåŒã³åºãããšãã«ãããŒã«ã«å€æ°
titleã宣èšããªãã£ãããã°ããŒãã«å€æ°ã®å€ãäžæžãããããã§ãïŒ
ãããã£ãŠãvarããŒã¯ãŒãã䜿çšãããšå€æ°ãããŒã«ã«ã«ãªããå€éšå€æ°ãšç«¶åããªãããšãä¿èšŒãããŸãïŒ
ããšãã°ãPHPã§ã¯ã颿°å
ã®ãã¹ãŠã®å€æ°ã¯ããã©ã«ãã§ããŒã«ã«ã§ããã°ããŒãã«å€æ°ã«ã¢ã¯ã»ã¹ããã«ã¯ãã°ããŒãã«å€æ°ã䜿çšããŠå®£èšããå¿
èŠããããŸãããŒã¯ãŒãglobal ïŒã
é衚瀺ã®ããã¹ã颿°ã®ãã¹ãŠã®ãã©ã¡ãŒã¿ãŒã¯èªåçã«ããŒã«ã«å€æ°ã§ããããšã«æ³šæããŠãã ããïŒ
var title = "external title"; function example(title){ title = "changing external title"; alert(title); } example('abc'); alert(title);
ã³ãŒããå®è¡ããããšãã
change external title ããšããã¡ãã»ãŒãžãçæãããæ¬¡ã«ã
external title ããšããã¡ãã»ãŒãžãçæãããŸããããã¯ãå€éšå€æ°
titleã颿°å
ã§å€æŽãããªãã£ãããšã瀺ããŸãã
ããŒã«ã«å€æ°ãåæåããããã»ã¹ã¯ãã³ãŒããå®è¡ãããåã«çºçããŸã-ãã®ãããã€ã³ã¿ãŒããªã¿ãŒã¯é¢æ°ã³ãŒããå®è¡ããŠåæåããŸãïŒ
å€ãå²ãåœãŠãã«ïŒ ïŒèŠã€ãã£ããã¹ãŠã®ããŒã«ã«å€æ°ïŒ
var title = "external title"; function example(){ title = "changing external title"; alert(title); var title = "internal title"; } example(); alert(title);
åã®äŸã®ããã«ãã³ãŒããå®è¡ãããšãã
å€éšã¿ã€ãã«ã倿ŽããŠããŸãããšããã¡ãã»ãŒãžãçæãããæ¬¡ã«ã
å€éšã¿ã€ãã« ããçæãããŸããããã¯ãå€éšå€æ°ã®
ã¿ã€ãã«ã颿°å
ã§å€æŽãã
ãŠããªãããšã瀺ããŸãã
è¡
ã¿ã€ãã«=ãå€éšã¿ã€ãã«ã®å€æŽããã³ã¡ã³ãã¢ãŠãããå Žå
; ããã®åŸãçæãããæåã®ã¡ãã»ãŒãžã¯ã
æªå®çŸ© ãã«ãªããŸã-ããŒã«ã«å€æ°ã®
ã¿ã€ãã« ã¯ãã§ã«åæåãã
ãŠããŸãïŒååšããŸãïŒããå€ïŒã¢ã©ãŒããåŒã³åºããããšãïŒã¯å²ãåœãŠãããŠããŸããã
ã³ãŒãïŒ
function example(){ alert(title); var title = "internal title"; }
以äžãšåçïŒ
function example(){ var title; alert(title); title = "internal title"; }
ãããã£ãŠã倿°ã颿°å
ã§ã©ãã§å®£èšãããŠããŠãã倿°ã¯åŒã³åºãæã«åæåãããããšãæããã«ãªããŸãã ãŸããå宣èšã¯æå³ããªããªãããšãæå³ããŸã-ã€ã³ã¿ãŒããªã¿ãŒã¯ã倿°å®£èšã2ååã«ç¡èŠããŸãã
ããã§ã¯ãã©ã®å€æ°ã颿°ã§äœ¿çšãããŠããããã©ã®ããã«å€æããŸããïŒ
颿°ã宣èšãããšãã«ã倿°ã
varããŒã¯ãŒãã䜿çšããŠããŒã«ã«ã«å®£èšãããŠããªãå Žåã倿°ã¯èŠªé¢æ°ã§æ€çŽ¢ãããŸãã ããã§èŠã€ãããªãå Žåãã€ã³ã¿ãŒããªã¿ãŒã倿°å®£èšãèŠã€ããããã°ããŒãã«ã¹ã³ãŒãã«å°éãããŸã§ãèŠªé¢æ°ã®ãã§ãŒã³ãæ€çŽ¢ãç¶ããŸãã
颿°å®£èšã®ãã§ãŒã³äžãŸãã¯ã°ããŒãã«ã¹ã³ãŒãå
ã§å€æ°å®£èšãèŠã€ãããªãå Žåã2ã€ã®éçºãªãã·ã§ã³ããããŸãã
- 倿°ã䜿çšïŒå€ãååŸïŒããããšãããšã倿°ã宣èšãããŠããªããšãããšã©ãŒãçæãããŸã
- 倿°ã«å€ãå²ãåœãŠãããšãããšã倿°ãã°ããŒãã«ã¹ã³ãŒãã§äœæãããå€ãå²ãåœãŠãããŸãã
function A(){ title = 'internal'; return function B(){ alert(title); } } var B = A(); B(); alert(title);
ã³ãŒããå®è¡ããåŸãäž¡æ¹ã®æéã
å
éš ããååŸããŸãã 颿°
Aå
ã®ã¿ã€ãã«å€æ°ã«å€ãå²ãåœãŠããšã颿°å€ã§äœ¿çšã§ããã°ããŒãã«å€æ°ãäœæãããŸãã 倿°ãžã®å€ã®å²ãåœãŠïŒãããã£ãŠã°ããŒãã«å€æ°ã®äœæïŒã¯é¢æ°
AãåŒã³åºã段éã§çºçããããã颿°
AãåŒã³åºãåã«
ã¢ã©ãŒãïŒã¿ã€ãã«ïŒãåŒã³åºãã
ãšãããšãšã©ãŒ
ãçæãããããšã«
泚æããŠãã ããã
é衚瀺ã®ããã¹ãå®éãã°ããŒãã«å€æ°ã®ã¡ã«ããºã ã¯ããã§èª¬æãããããå°ãè€éã§ãïŒåæåãããŠããªã倿°ã«å€ãå²ãåœãŠãããšãããšãã°ããŒãã«å€æ°ã¯äœæãããŸãããããŠã£ã³ããŠãªããžã§ã¯ãã®ããããã£ïŒ
ãã¹ãŠã®ã°ããŒãã«å€æ°ã®ã³ã³ãããšããŠæ©èœããŸã ïŒã
ã°ããŒãã«å€æ°ïŒ
varã§å®£èš ïŒãšã®äž»ãªéãã¯ã
deleteæŒç®åã䜿çšããŠå€æ°ãåé€ã§ããªãããšã§ãã ãã以å€ã®å ŽåããŠã£ã³ããŠãªããžã§ã¯ãã®ããããã£ã®æäœã¯ãã°ããŒãã«å€æ°ã®æäœãšåãã§ãã
詳现ã¯
ãã¡ã ã
JavaScriptã®ã¯ããŒãžã£ãŒã®ãããã¯ã«æ»ããŸãã
JavaScriptã¯ãä»ã®ã»ãšãã©ã®ããã°ã©ãã³ã°èšèªãšæ¯èŒããŠã倿°ã¹ã³ãŒãã䜿çšããããæè»ãªã¢ãããŒããæäŸããŸãã ãŸããããŒã«ã«ã¹ã³ãŒããšä»ã®é¢æ°å
ã®é¢æ°ã®åçãªå®£èšãçµã¿åãããå¯èœæ§ããããããã¯ããŒãžã£ãŒã¡ã«ããºã ãçºçããŸãã
ãåç¥ã®ããã«ããã¹ãŠã®ããŒã«ã«å€æ°ã¯æ°ãã颿°åŒã³åºãããšã«åäœæãããŸãã ããšãã°ã颿°
Aããã ããã®äžã§å€æ°
titleã宣èšãããŠããŸãã
function A(){ var title = 'internal'; alert(title); } A();
颿°
Aãå®è¡ããããšã倿°
titleã¯ååšããªããªããã¢ã¯ã»ã¹ã§ããªããªããŸãã äœããã®æ¹æ³ã§å€æ°ã«ã¢ã¯ã»ã¹ããããšãããšã倿°ã宣èšãããŠããªããšãããšã©ãŒãçºçããŸãã
ããã§ã颿°
Aã®äžã«ã
title倿°ã®å€ã衚瀺ãã颿°å®£èšãšããã®å€ãæž¡ãããå€ã«å€æŽãã颿°ã远å ãããããã®é¢æ°ãè¿ããŸãã
function getTitle (){ var title = "default title"; var showTitle = function(){ alert(title); }; var setTitle = function(newTitle){ title = newTitle; }; return { "showTitle": showTitle, "setTitle": setTitle }; } var t = getTitle(); t.showTitle(); t.setTitle("Hello World"); t.showTitle();
ãã®äŸãéå§ããåã«ã
ã¿ã€ãã«å€æ°ã®åäœãè«ççã«èª¿ã¹ãŠã¿ãŸã
ãgetTitle颿°ã
èµ·åããããšã倿°ãäœæãããåŒã³åºããå®äºãããšç Žæ£ãããŸãã ãã ãã
getTitle颿°ã
åŒã³åºããããš ããã®å€æ°ã䜿çšãã2ã€ã®åçã«å®£èšããã
showTitleããã³
setTitle颿°ãæã€ãªããžã§ã¯ãã
è¿ãããŸãã ãããã®é¢æ°ãåŒã³åºããšã©ããªããŸããïŒ
ãããŠããã®äŸãå®è¡ãããšãæåã«ã
ããã©ã«ãã®ã¿ã€ãã« ãã衚瀺ãããæ¬¡ã«ã
Hello World ãã衚瀺ãããããšãããã
ãŸã ã ãããã£ãŠã
ã¿ã€ãã«å€æ°ã¯ååšãç¶ããŸããã
getTitle颿°
ã¯æ¢ã«çµäºã
ãŠããŸãã ãã ããäžèšã®
showTitle / setTitle颿°ãé€ãããã®å€æ°ã«ã¯ä»ã«ã¢ã¯ã»ã¹ã§ããŸããã ããã¯ã¯ããŒãžã£ãŒã®ç°¡åãªäŸã§ãã
ã¿ã€ãã«å€æ°ã¯ãã¯ããŒãºãããã宣èšäžã«ã¢ã¯ã»ã¹ã§ãã颿°ã®ã¿ã«è¡šç€ºãããŸãã
getTitle颿°ãå床å®è¡ãããšã
ã¿ã€ãã«å€æ°ãš
showTitle / setTitle颿°ãæ¯ååäœæããã以åã®å®è¡ãšã¯é¢ä¿ããªãããšãããããŸãã
var t1 = getTitle(); t1.setTitle("Hello World 1"); var t2 = getTitle(); t2.setTitle("Hello World 2"); t1.showTitle(); t2.showTitle();
ã³ãŒããå®è¡ãããšïŒäžèšã®
getTitle颿°ã³ãŒãã远å ããããšãå¿ããã«ïŒãã
Hello World 1 ããšã
Hello World 2 ããšãã2ã€ã®ã¡ãã»ãŒãžãçæãããŸãïŒ
ãã®åäœã¯ãã©ã€ããŒã倿°ããšãã¥ã¬ãŒãããããã«äœ¿çšãããŸã ïŒã
çè«ãšæãåçŽãªäŸãæ®ããŠãå®éã«ã¯ããŒãžã£ããã©ã®ãããªå©çãåŸãããããçè§£ããããšããŸãã
1ã€ã¯ãã°ããŒãã«ã¹ã³ãŒããè©°ãŸãããªãæ©èœã§ããã°ããŒãã«ã¹ã³ãŒãã§ã®ç«¶åã®åé¡ã¯æããã§ãã ç°¡åãªäŸïŒ
showTitle颿°ã宣èšããè€æ°ã®javascriptãã¡ã€ã«ãããŒãžã«æ¥ç¶ãããŠããå Žåã
showTitleãåŒã³åºããããšãæåŸã«å®£èšããã颿°ãå®è¡ãããŸãã åãããšã宣èšããã倿°ã«ãåœãŠã¯ãŸããŸãã
ãã®ç¶æ³ãåé¿ããã«ã¯ãå颿°/倿°ãäžæã®ååã§åŒã³åºãããã¯ããŒãžã£ãŒã䜿çšããå¿
èŠããããŸãã å颿°ãšå€æ°ãäžæã®ååã§å€åœ¢ããŠååãä»ããã®ã¯äžäŸ¿ã§ãããå®å
šãªäžææ§ãä¿èšŒãããã®ã§ã¯ãããŸããã äžæ¹ãã¯ããŒãžã£ãŒã¡ã«ããºã ã¯ã倿°ãšé¢æ°ã®åœåã«å®å
šãªèªç±ãæäŸããŸãã ãããè¡ãã«ã¯ã宣èšã®çŽåŸã«å®è¡ãããå¿å颿°ã§ã³ãŒãå
šäœãã©ããããã ãã§ååã§ãã
(function(){ })();
ãã®çµæã宣èšããããã¹ãŠã®å€æ°ãšé¢æ°ã¯ã°ããŒãã«ã¹ã³ãŒãã§äœ¿çšã§ããªããªããŸããã€ãŸããç«¶åã¯çºçããŸããã
ããã§ã1ã€ãŸãã¯2ã€ã®æ©èœã«ã°ããŒãã«ã«ã¢ã¯ã»ã¹ã§ããããšãå¿
èŠãªå Žåã¯ã©ãããã°ããã§ããïŒ ãããŠãããã§ã¯ãã¹ãŠããšãŠãç°¡åã§ãã ã°ããŒãã«ã¹ã³ãŒããæäŸããæãã°ããŒãã«ãªãªããžã§ã¯ãã¯ã
ãŠã£ã³ããŠãªããžã§ã¯ãã§ãã 颿°ã¯ãªããžã§ã¯ãã§ãããšããäºå®ã«ããã颿°ã
ãŠã£ã³ããŠããããã£ã«å²ãåœãŠãŠãã°ããŒãã«ã«ãªãããšãã§ããŸãã ãã©ã€ããŒãã¹ã³ãŒãããã°ããŒãã«é¢æ°ã宣èšããäŸïŒ
(function(){ var title = "Hello World"; function showTitle(){ alert(title); } window.showSimpleTitle = showTitle; })(); showSimpleTitle();
ã³ãŒãå®è¡ã®çµæãã¡ãã»ãŒãžã
Hello World ããçæãããŸã-ããŒã«ã«ã®
showTitle颿°
㯠showSimpleTitleãšããååã§ã°ããŒãã«ã«äœ¿çšå¯èœã«ãªããå¿å颿°ã®å€éšã§ã¯ã¢ã¯ã»ã¹ã§ããªããclosedã倿°
titleã䜿çšããŸãã
ãªããªã ããã«å®è¡ãããå¿å颿°ã§ãã¹ãŠãã©ãããããšããã®é¢æ°ã«ãã©ã¡ãŒã¿ãŒãæž¡ãããšãã§ããŸãããã®é¢æ°å
ã§ã¯ãããŒã«ã«åã§äœ¿çšã§ããŸãã JQueryã®äŸïŒ
(function(){ $('.hidden').hide(); })();
ã°ããŒãã«å€æ°$ãjQueryã§ãªãå Žåããšã©ãŒãã¹ããŒãããŸãã ããã¯ãjQueryã«å ããŠã$颿°ã䜿çšããå¥ã®ã©ã€ãã©ãªïŒPrototype.JSãªã©ïŒã䜿çšãããŠããå Žåã«çºçããŸãã ãé¡ãã®è§£æ±ºçïŒ
(function(){ var $ = jQuery; $('.hidden').hide(); })();
åäœããæ£ããåäœããŸãã ããããããŸããããã§ã¯ãããŸããã ããããããªè§£æ±ºçããããŸã-ããŒã«ã«å€æ°$ã颿°ãžã®åŒæ°ãšããŠå®£èšããããã«jQueryãªããžã§ã¯ããæž¡ããŸãïŒ
(function($){ })(jQuery);
颿°ã®ãã¹ãŠã®åŒæ°ãããã©ã«ãã§ããŒã«ã«å€æ°ã§ããããšãæãåºããšãå¿å颿°$ã®å
éšã§ã¯jQueryãªããžã§ã¯ããžã®åç
§ã§ããã°ããŒãã«ãªããžã§ã¯ã$ã«æ¥ç¶ãããŠããªãããšãæããã«ãªããŸãã å¿å颿°ã«ããåä¿¡ãããçè§£ããããããããã«ãå¿å颿°ãéå¿åã«ããããšãã§ããŸã-颿°ã宣èšããŠããã«èµ·åããŸãïŒ
function __run($){ } __run(jQuery);
ããã§ããã°ããŒãã«é¢æ°$ãåŒã³åºãå¿
èŠãããå Žåã¯ã
windowã䜿çšã§ããŸãã
2ã€ç®ã¯ãã¯ããŒãžã£ãŒã䜿çšãã颿°ã®åçãªå®£èšã§ããã€ãã³ãã¢ãã«ã䜿çšããå Žåãåãã€ãã³ããç°ãªãèŠçŽ ã§ãã³ã°ã¢ããããå¿
èŠãããå Žåã«ããçºçããŸãã ããšãã°ã10åã®divèŠçŽ ããããã¯ãªãã¯ãããš
alertïŒNïŒãåŒã³åºãå¿
èŠããããŸã
ïŒ Nã¯äžæã®èŠçŽ çªå·ã§ãïŒã
ã¯ããŒãžã£ãŒã䜿çšããæãç°¡åãªãœãªã¥ãŒã·ã§ã³ïŒ
for(var counter=1; counter <=10; counter++){ $('<div>').css({ "border": "solid 1px blue", "height": "50px", "margin": "10px", "text-align": "center", "width": "100px" }).html('<h1>'+ counter +'</h1>') .appendTo('body') .click(function(){ alert(counter); }); }
ãã ãããã®ã³ãŒããå®è¡ãããšãäºæããªããçµæãçºçããŸãããã¹ãŠã®ã¯ãªãã¯ã§åãæ°ã衚瀺ãããŸã-11ã
çãã¯ç°¡åã§ãã
ã«ãŠã³ã¿ãŒå€æ°ã®å€ã¯ãèŠçŽ ãã¯ãªãã¯ãããšãã«ååŸãããŸãã ãããŠããã®æãŸã§ã«å€æ°ã®å€ã¯11ïŒãµã€ã¯ã«ãçµäºããããã®æ¡ä»¶ïŒã«ãªã£ãŠãããããããã«å¿ããŠãã¹ãŠã®èŠçŽ ã«å¯ŸããŠ11ã衚瀺ãããŸãã
æ£ãã解決çã¯ãèŠçŽ ããšã«åå¥ã«ã¯ãªãã¯åŠç颿°ãåçã«çæããããšã§ãã
for(var counter=1; counter <=10; counter ++){ $('<div>').css({ "border": "solid 1px blue", "height": "50px", "margin": "10px", "text-align": "center", "width": "100px" }).html('<h1>'+ counter +'</h1>') .appendTo('body') .click((function(iCounter){ return function(){ alert(iCounter); } })(counter)); }
ãã®ã¢ãããŒãã§ã¯ã
ã«ãŠã³ã¿ãŒããã©ã¡ãŒã¿ãŒãšããŠåãåããåç颿°ãè¿ãå¿å颿°ã䜿çšããŸãã å¿å颿°å
ã§ã¯ã
ããŒã«ã«å€æ°
iCounterã«ã¯ã颿°ãåŒã³åºããããšãã®çŸåšã®
ã«ãŠã³ã¿ãŒå€ãå«ãŸããŠããŸãã ãŸãã颿°ãåŒã³åºããã³ã«ãã¹ãŠã®ããŒã«ã«å€æ°ãå宣èšãããããïŒæ°ããã¯ããŒãžã£ãŒãäœæãããããïŒãå¿å颿°ãåŒã³åºããããšãæ°ããããã€ãããã¯é¢æ°ãããæ¢ã«ãéãããçªå·ãšãšãã«è¿ãããŸãã
ç°¡åã«èšããšã颿°ã2åïŒ3åç®ã4åç®...ïŒå®è¡ãããšããã¹ãŠã®ããŒã«ã«å€æ°ãã¡ã¢ãªå
ã«åäœæãããåã®é¢æ°åŒã³åºãäžã«äœæããã倿°ãšã¯äœã®é¢ä¿ããããŸããã
é£ããã§ããïŒ åããŠã ãšæã-ã¯ãã ããããã°ããŒãã«å€æ°ãããããæã€å¿
èŠã¯ãªãããã©ãããç§ãåŒã³åºããã®ãããšãã颿°ã§ãã§ãã¯ãè¡ããŸãã ãããŠãããã©ã«ãã§æž¡ããã颿°ãåŒã³åºãjQuery.eachã䜿çšãããšãã³ãŒãã¯ããã«ã·ã³ãã«ã§èªã¿ããããªããŸãã
$('div.handle-click').each(function(counter){ $(this).click(function(){ alert(counter); }); });
ã¯ããŒãžã£ãŒã®ãããã§ãçŸããç°¡æœã§çè§£ããããã³ãŒããèšè¿°ããå¿
èŠã«å¿ããŠå€æ°ãšé¢æ°ã«ååãä»ããããšãã§ããŸãã ãŸãããã®ã³ãŒããä»ã®ãã©ã°å¯èœãªã¹ã¯ãªãããšç«¶åããªãããšã確èªããŠãã ããã
é衚瀺ã®ããã¹ã倿°ã¯ããŒãžã£ã®ã¡ã«ããºã ã¯ãå
éšé¢æ°ããããã£[[Scope]]ã䜿çšããŠå®è£
ãããŸã-ãã®ãªããžã§ã¯ãã¯ã颿°ã®å®£èšäžã«éå§ãããèŠªé¢æ°ã§å®£èšããã倿°ãžã®åç
§ãå«ã¿ãŸãã ãã®ãããäœæ¥ïŒåŒã³åºãïŒäžã«ããã¹ãŠã®ã芪ã倿°ã颿°ã§äœ¿çšå¯èœã«ãªããŸãã å®éããªããžã§ã¯ã[[Scope]]ã¯ã¯ããŒãžã£ãŒã¡ã«ããºã ã®ããŒã§ãã
ééã¡ã«ããºã ã®è©³çްã«ã€ããŠã¯ããããã¯ã®äžã®ãªã³ã¯ã«ããèšäºãã芧ãã ããã
ãããã¿ã€ãã³ã°ãŸãã¯ãã¯ã©ã¹ãªããžã§ã¯ããäœæãããã
JavaScriptã®ãããã¿ã€ãã³ã°ã«ã€ããŠæžãããå€ãã®åªããèšäºããããŸãã ãããã£ãŠãç§ã¯ãã§ã«æžãããŠããããšãç¹°ãè¿ããªãããã«ããŸããããããã¿ã€ãã®ã¡ã«ããºã ã®åºç€ãåã«èª¬æããŸãã
JavaScriptã«ã¯ãªããžã§ã¯ãã®æŠå¿µããããŸãããã¯ã©ã¹ã®æŠå¿µã¯ãããŸããã
ã¿ã€ãã³ã°ã匱ãããããã¹ãŠã®JavaScriptã¯ãªããžã§ã¯ãããŒã¹ã§ãããããJavaScriptã®ã»ãšãã©ãã¹ãŠã®ããŒã¿ã¯ãªããžã§ã¯ãã§ãããããªããžã§ã¯ããšããŠäœ¿çšã§ããŸãã ãŸããã¯ã©ã¹ã®ä»£æ¿ãšããŠããããã¿ã€ãã³ã°ã®å¯èœæ§ããããŸã-ããã©ã«ãã§ããããã£ãšã¡ãœãããæã€ãããã¿ã€ãããªããžã§ã¯ãã«å²ãåœãŠãããšãã§ããŸãã
JavaScriptã§ã®ãªããžã§ã¯ãã®æäœã¯éåžžã«ç°¡åã§ãããªããžã§ã¯ãã宣èšããããããã£ãšã¡ãœãããå²ãåœãŠãã ãã§ãã
var dog = { "name": "Rocky", "age": "5", "talk": function(){ alert('Name: ' + this.name + ', Age: ' + this.age); } };
ãªããžã§ã¯ãã倿°ããå Žåã¯ããªããžã§ã¯ããè¿ãå¥ã®é¢æ°ãäœæããæ¹ã䟿å©ã§ãã
function getDog(name, age){ return { "name": name, "age": age, "talk": function(){ alert('Name: ' + this.name + ', Age: ' + this.age); } }; } var rocky = getDog('Rocky', 5); var jerry = getDog('Jerry', 3);
ãããã¿ã€ãã䜿çšããŠãåãããšãã§ããŸãã
function Dog(name, age){ this['name'] = name; this.age = age; } Dog.prototype = { "talk": function(){ alert('Name: ' + this.name + ', Age: ' + this.age); } }; var rocky = new Dog('Rocky', 5); var jerry = new Dog('Jerry', 3);
åè¿°ã®ããã«ããããã¿ã€ãã¯ããã©ã«ãã®ããããã£ãšã¡ãœãããå«ãåçŽãªãªããžã§ã¯ãã§ãã ã€ãŸã ãªããžã§ã¯ãã§ããããã£ãååŸããããšãããããªããžã§ã¯ããæããªã颿°ãåŒã³åºããšãJavaScriptã€ã³ã¿ãŒããªã¿ãŒã¯ãšã©ãŒãçæããåã«ããããã¿ã€ããªããžã§ã¯ãã§ãã®ããããã£/颿°ãèŠã€ããããšããŸããèŠã€ãã£ãå Žåã¯ãããããã£/颿°ãããã¿ã€ãã
é衚瀺ã®ããã¹ããããã¿ã€ãã®ããããã£ã¯ãèªã¿åã/å®è¡ã«ã®ã¿äœ¿çšãããããšã«æ³šæããŠãã ããã å
ã®ããããã£ããªããžã§ã¯ãèªäœã§èŠã€ãããªãå Žåãå€ãžã®ã¢ã¯ã»ã¹/颿°ã®å®è¡ã詊è¡ããå Žåã«ã®ã¿ãããããžã®ã¢ã¯ã»ã¹ãçºçããŸãã
ãªããžã§ã¯ãã«äœããã®ããããã£ïŒãããã¿ã€ãã§ã¯å©çšå¯èœã§ããããªããžã§ã¯ãã§ã¯å©çšäžå¯ïŒãå²ãåœãŠãããšãããšãããããã£ã¯ãªããžã§ã¯ãã§æ£ç¢ºã«äœæããããããã¿ã€ãã§ã¯å€æŽãããŸããã
JavaScriptã¯éåžžã«æè»ãªèšèªã§ãã ãããã£ãŠãæŠããŠããããã¿ã€ãã䜿çšããŠå®è¡ã§ããããšã¯ãã¹ãŠããããã¿ã€ããªãã§å®è¡ã§ããŸãã ãã ãããããã¿ã€ãã䜿çšãããšã倿Žãšç¶æ¿ãããã³OOPã«è¿ãæ§æã«ããæè»ãªå¯èœæ§ãæäŸãããŸãã èå³ã®ããæ¹ã®ããã«ãèšäºã®æåŸã«ãç¬èªã®ã¯ã©ã¹ãå®è£
ããããã®ã¡ã«ããºã ãšå¯èœæ§ã®è©³çްãªèª¬æãå«ãèšäºãžã®ãªã³ã¯ããããŸãã
ãããŠããããã¿ã€ãã䜿çšããŠæ¢åã®ãªããžã§ã¯ãã®æ©èœãæ¡åŒµããå°ããªèª¬æçãªäŸ
ä»»æã®æ¥ä»ããææ¥ã®ååãååŸããå¿
èŠããããŸãããçµã¿èŸŒã¿ã®Dateãªããžã§ã¯ãã«ã¯getDayã¡ãœããã®ã¿ãå«ãŸããŠãããææ¥ã®æ°å€è¡šçŸã0ã6ã§è¿ããŸãïŒæ¥ææ¥ããåææ¥ããããè¡ãããšãã§ããŸãïŒ function getDayName(date){ var days = ['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday']; return days[date.getDay()]; } var today = new Date(); alert(getDayName(today));
ãŸãã¯ããããã¿ã€ãã³ã°ã䜿çšããŠãçµã¿èŸŒã¿ã®æ¥ä»ãªããžã§ã¯ããæ¡åŒµããŸãã Date.prototype.getDayName = function(){ var days = ['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday']; return days[this.getDay()]; } var today = new Date(); alert(today.getDayName());
2çªç®ã®æ¹æ³ã¯ãããšã¬ã¬ã³ãã§ããäœåãªã颿°ã§ã¹ã³ãŒããè©°ãŸãããããšã¯ãªããšæããŸããäžæ¹ãè€æ°ã®äººãã³ãŒãã«åãçµãã§ããå Žåãåã蟌ã¿ãªããžã§ã¯ãã®æ¡åŒµã¯æªã圢ã§ãããšããæèŠããããŸãããããã£ãŠãããã«ã¯æ³šæããå¿
èŠããããŸããå®è¡ã³ã³ããã¹ããŸãã¯ãThis Mysterious thisã
OOPã䜿çšãããŠããä»ã®ããã°ã©ãã³ã°èšèªããJavaScriptã«åãæ¿ãããšããã®ãªããžã§ã¯ããJavaScriptã§äœãæå³ããããçè§£ããããšã¯éåžžã«å°é£ã§ããç°¡åã«èª¬æããããšãããšãããã¯é¢æ°ãåŒã³åºããããªããžã§ã¯ããžã®åç
§ã§ããäŸïŒ
var exampleObject = { "title": "Example Title", "showTitle": function(){ alert(this.title); } }; exampleObject.showTitle();
äŸãããããããã«ãexampleObject.showTitleïŒïŒãåŒã³åºããšã颿°ã¯ãªããžã§ã¯ãã¡ãœãããšããŠåŒã³åºããããã®é¢æ°å
ã§é¢æ°ãåŒã³åºããexampleObjectãªããžã§ã¯ããåç
§ããŸãã颿°èªäœã¯ãªããžã§ã¯ãã«ã¯äžåä»å ããããåå¥ã«ååšããŸããã³ã³ããã¹ããã€ã³ãã£ã³ã°ã¯ã颿°åŒã³åºãäžã«çŽæ¥çºçããŸãã function showTitle(){ alert(this.title); } var objectA = { "title": "Title A", "showTitle": showTitle }; var objectB = { "title": "Title B", "showTitle": showTitle }; objectA.showTitle(); objectB.showTitle();
ãã®äŸã§æããã«ã³ãŒã«ããããšã瀺ããŠããobjectA.showTitleã¯ïŒïŒ ãããã¯ãåç
§ObjectAã«ããšåŒã³åºãobjectB.showTitleãïŒïŒ - ObjectBã«äžãshowTitle颿°èªäœã¯å¥åã«ååšããäœææã«ããããã£ãšããŠãªããžã§ã¯ãã«åçŽã«å²ãåœãŠãããŸãã颿°ãåŒã³åºããšãã«ã颿°ïŒé¢æ°ïŒããªããžã§ã¯ããåç
§ããªãå Žåã颿°å
ã®ããã¯ã°ããŒãã«ãŠã£ã³ããŠãªããžã§ã¯ããåç
§ããŸããã€ãŸã
åã«showTitleïŒïŒãåŒã³åºããšãã¿ã€ãã«å€æ°ã宣èšãããŠããªããšãããšã©ãŒãçæãããŸãããã ããã°ããŒãã«å€æ°titleã宣èšãããšã颿°ã¯ãã®å€æ°ã®å€ãåºåããŸãã var title = "Global Title"; function showTitle(){ alert(this.title); } showTitle();
é衚瀺ã®ããã¹ãStrict Mode :
, this window , this . 颿°ã®ã³ã³ããã¹ããåŒã³åºãäžã«æ£ç¢ºã«æ±ºå®ãããããšã瀺ãããã«ã颿°ããªããžã§ã¯ãã¡ãœãããšããŠã®ã¿æåã«ååšããäŸã瀺ããŸãã var title = "Global Title"; var exampleObject = { "title": "Example Title", "showTitle": function(){ alert(this.title); } }; var showTitle = exampleObject.showTitle;
å®è¡ã®çµæãã¡ãã»ãŒãžãGlobal Titleãã衚瀺ãããŸããããã¯ã颿°åŒã³åºãäžã«ããããexampleObjectãªããžã§ã¯ãã§ã¯ãªãã°ããŒãã«ãŠã£ã³ããŠãªããžã§ã¯ããæãããšãæå³ããŸããããã¯ãvarè¡ã®showTitle = exampleObject.showTitleã§é¢æ°ãžã®ãªã³ã¯ã®ã¿ãååŸããshowTitleïŒïŒãåŒã³åºããããšããã®åç
§ããŠã£ã³ããŠãªããžã§ã¯ãã«ããå
ã®exampleObjectãžã®åç
§ããªãããã§ããç°¡åã«ããããã«ã颿°ããªããžã§ã¯ãã®ããããã£ãšããŠåŒã³åºãããå Žåãããã¯ãã®ãªããžã§ã¯ããåç
§ããŸããçºä¿¡è
ãããªãå Žåãããã°ããŒãã«ãŠã£ã³ããŠãªããžã§ã¯ããåç
§ããŸããããããééãã®äŸïŒ var exampleObject = { "title": "Example Title", "showTitle": function(){ alert(this.title); } }; jQuery('#exampleDiv').click(exampleObject.showTitle);
äºæ³ããããExample Titleãã§ã¯ãªãIDãexampleDivãã®DIVãã¯ãªãã¯ãããšã空ã®è¡ãŸãã¯DIVã®ãtitleã屿§ã®å€ã衚瀺ãããŸããããã¯ãã¯ãªãã¯ã€ãã³ãã«é¢æ°ãäžãããããªããžã§ã¯ãã«ã¯äžããªããšããäºå®ã«ãããã®ã§ãããããŠããã®çµæãå
ã®exampleObjectãåç
§ããã«é¢æ°ãèµ·åãããŸãïŒäŸ¿å®äžãjQueryã¯èŠçŽ èªäœã®ã³ã³ããã¹ãã§ãã³ãã©ãŒé¢æ°ãå®è¡ããåæ§ã®çµæã«ã€ãªãããŸãïŒããªããžã§ã¯ãã«ãã€ã³ãããã颿°ãéå§ããã«ã¯ããªããžã§ã¯ããžã®åç
§ã䜿çšããŠé¢æ°ãåŒã³åºãå¿
èŠããããŸãã jQuery('#exampleDiv').click(function(){ exampleObject.showTitle(); });
JavaScriptèªäœã䜿çšããŠããã®ãããªãäžåšçšãªã宣èšãåé¿ããã«ã¯ãbindã䜿çšããŠé¢æ°ãã³ã³ããã¹ãã«ãã€ã³ãã§ããŸãã jQuery('#exampleDiv').click(exampleObject.showTitle.bind(exampleObject));
ãã ããããŒãžã§ã³9以åã®èª°ããæãã IEã¯ãã®æ©èœããµããŒãããŠããŸããããããã£ãŠãã»ãšãã©ã®JSã©ã€ãã©ãªã¯ããã®æ©èœãäœããã®åœ¢ã§ç¬ç«ããŠå®è£
ããŸããããšãã°ãjQueryã§ã¯ãããã·ã§ãã jQuery('#exampleDiv').click(jQuery.proxy(exampleObject.showTitle, exampleObject));
ãã®ã¢ãããŒãã®æ¬è³ªã¯éåžžã«åçŽã§ããjQuery.proxyãåŒã³åºããããšãå¿å颿°ãè¿ãããã¯ããŒãžã£ãŒã䜿çšããŠãæž¡ããããªããžã§ã¯ãã®ã³ã³ããã¹ãã§å
ã®é¢æ°ãåŒã³åºãããŸããå®éãJavaScriptã¯ä»»æã®ã³ã³ããã¹ãã§ä»»æã®é¢æ°ãå®è¡ã§ããŸãããŸãããªããžã§ã¯ãã«æ©èœãå²ãåœãŠãå¿
èŠããããŸãããJavaScriptã§ãããè¡ãã«ã¯ãé©çšãšåŒã³åºãã® 2ã€ã®æ¹æ³ããããŸãã function showTitle(){ alert(this.title); } var objectA = { "title": "Title A", }; var objectB = { "title": "Title B", }; showTitle.apply(objectA); showTitle.call(objectA);
颿°ã®ãã©ã¡ãŒã¿ãŒã䜿çšããªããŠããäž¡æ¹ãšãåãããã«æ©èœããŸããé©çšé¢æ°ãšåŒã³åºã颿°ã¯ãåŒã³åºããããšãã«ãã©ã¡ãŒã¿ãŒãæž¡ãããæ¹æ³ã®ã¿ãç°ãªããŸãã function example(A, B, C){ } example.apply(context, [A, B, C]); example.call(context, A, B, C);
åãäžããããŠãããããã¯ã®è©³çްã«ã€ããŠã¯ã次ãåç
§ããŠãã ããã