JSã«ã¯ã¹ã³ãŒãã«é¢é£ããããã€ãã®æŠå¿µããããŸãããåå¿è
ã®éçºè
ïŒããã³çµéšè±å¯ãªéçºè
ã§ãïŒã«ã¯å¿
ãããæç¢ºã§ã¯ãããŸããã ãã®èšäºã¯ãã¹ã³ãŒããã¯ããŒãžã£ããthisããããŒã ã¹ããŒã¹ã颿°ã®ã¹ã³ãŒããã°ããŒãã«å€æ°ãã¬ãã·ã«ã«ã¹ã³ãŒãããã©ã€ããŒãããã³ãããªãã¯ãšãªã¢ãªã©ã®èšèãèããŠãJSã¹ã³ãŒãã®æ·±intoã«é£ã³èŸŒãããšãã人ã
ã«æ§ããããŠããŸããè³æãèªãã§ã次ã®è³ªåã«çããããšãã§ããŸãã
-ã¹ã³ãŒããšã¯äœã§ããïŒ
-ã°ããŒãã«/ããŒã«ã«OSãšã¯äœã§ããïŒ
-åå空éãšã¯äœã§ããïŒOBãšã¯ã©ãéããŸããïŒ
-ãã®ããŒã¯ãŒãã®æå³ãšãOBãšã®é¢ä¿ã¯ïŒ
-æ©èœçããã³èªåœçOBãšã¯äœã§ããïŒ
-ééãšã¯äœã§ããïŒ
-ãã®ãã¹ãŠãã©ã®ããã«çè§£ããŠäœæã§ããŸããïŒ
ã¹ã³ãŒããšã¯äœã§ããïŒ
JSã§ã¯ãã¹ã³ãŒãã¯ã³ãŒãå
ã®çŸåšã®ã³ã³ããã¹ãã§ãã OBã¯ããŒã«ã«ãŸãã¯ã°ããŒãã«ã«å®çŸ©ã§ããŸãã é²åŒŸã³ãŒããæžãéµã¯ãOBãçè§£ããããšã§ãã 倿°ãšé¢æ°ãå©çšã§ããå Žæãã³ãŒãå
ã®ã³ã³ããã¹ãã倿Žããããé«éã§ãããµããŒããããã³ãŒãïŒãããã°ãé«éïŒãèšè¿°ããæ¹æ³ãçè§£ããŸãããã OMã«å¯ŸåŠããã®ã¯ç°¡åã§ããAãBã®ã©ã¡ãã®OMã«ä»å
¥ã£ãŠããã®ããšãã質åãèªåããŸãã
ã°ããŒãã«/ããŒã«ã«OBãšã¯äœã§ããïŒ
1è¡ã®ã³ãŒããèšè¿°ããããšãªãããã§ã«ã°ããŒãã«OBã«ããŸãã 倿°ãããã«å®çŸ©ããå Žåã倿°ã¯ã°ããŒãã«OBã«ãããŸãã
ã°ããŒãã«OBã¯ããªãã®èŠªåã§ãããææªã®æªå€¢ã§ãã ç°ãªããšãŒãžã§ã³ããšé£æºããããšãåŠã¶ãšãååã®å
±ééšåã衚瀺ãããªãéããã°ããŒãã«ãšãŒãžã§ã³ãã®åé¡ã¯çºçããŸããã å€ãã®å Žåããã°ããŒãã«OB-ããã¯æªãããšèãããšãã§ããŸããããã®çç±ã®èª¬æã¯ã»ãšãã©åŸãããŸããã GOV-æªãã¯ãããŸãããç°ãªãOBããå©çšã§ããã¢ãžã¥ãŒã«ãšAPIãäœæãããšãã«äœ¿çšããå¿
èŠããããŸããå©çãåŸãããã«æ
éã«äœ¿çšããå¿
èŠããããŸãã
ç§ãã¡ã¯ãã¹ãŠjQueryã䜿çšããŸããã æžãããããã«
jQuery('.myClass');
ã°ããŒãã«OBã§jQueryã«ã¢ã¯ã»ã¹ãããã®ã¢ã¯ã»ã¹ãåå空éãšåŒã¶ããšãã§ããŸãã çšèªãåå空éãã¯ãçšèªOBã®ä»£ããã«äœ¿çšãããå ŽåããããŸãããéåžžã¯ã¬ãã«èªäœã®OBã瀺ããŸãã ãã®å ŽåãjQueryã¯ã°ããŒãã«OBã«ãããåå空éã§ãã jQueryåå空éã¯ãjQueryã©ã€ãã©ãªã®PIãšããŠæ©èœããã°ããŒãã«OBã§å®çŸ©ãããŸããããã®ãã¹ãŠã®ã³ã³ãã³ãã¯ãã®PIããç¶æ¿ãããŸãã
ããŒã«ã«OBãšã¯äœã§ããïŒ
ããŒã«ã«OMã¯ãã°ããŒãã«ã®åŸã«å®çŸ©ãããOMãšåŒã°ããŸãã éåžžã1ã€ã®GOVããããå®çŸ©ãããå颿°ã«ã¯ããŒã«ã«OBãå«ãŸããŸãã å¥ã®é¢æ°å
ã§å®çŸ©ãããå颿°ã«ã¯ãå€éšé¢æ°ã®OBã«é¢é£ä»ããããç¬èªã®ããŒã«ã«OBããããŸãã
颿°ãå®çŸ©ããŠå
éšã§å€æ°ãèšå®ãããšããããã¯ããŒã«ã«OBã«å±ããŸãã äŸïŒ
BWTã®ãã¹ãŠã®å€æ°ã¯GOWã«è¡šç€ºãããŸããã å€éšããçŽæ¥ã¢ã¯ã»ã¹ããããšã¯ã§ããŸããã äŸïŒ
var myFunction = function () { var name = 'Todd'; console.log(name);
倿°ãnameãã¯ããŒã«ã«OBãåç
§ããŸããå€éšããã¯èŠããªããããå®çŸ©ãããŠããŸããã
æ©èœçOBã
ãã¹ãŠã®ããŒã«ã«OBã¯ãæ©èœOBã§ã®ã¿äœæãããforã«ãŒããwhileã«ãŒãããŸãã¯ifãswitchãªã©ã®ãã£ã¬ã¯ãã£ãã«ãã£ãŠã¯äœæãããŸããã æ°ããæ©èœã¯æ°ããã¹ã³ãŒãã§ãã äŸïŒ
ãã®ãããæ°ããOBãšããŒã«ã«å€æ°ã颿°ããªããžã§ã¯ããç°¡åã«äœæã§ããŸãã
ã¬ãã·ã«ã«OB
1ã€ã®é¢æ°ãå¥ã®é¢æ°ã®å
éšã§å®çŸ©ãããŠããå Žåãå
éšã¯å€éšOMã«ã¢ã¯ã»ã¹ã§ããŸãã ããã¯ããåå¥OBããŸãã¯ãã¯ããŒãžã£ããŸãã¯ãéçOBããšåŒã°ããŸãã
var myFunction = function () { var name = 'Todd'; var myOtherFunction = function () { console.log('My name is ' + name); }; console.log(name); myOtherFunction();
ã¬ãã·ã«ã«OBã䜿çšããã®ã¯éåžžã«ç°¡åã§ãã芪ã®OBã§å®çŸ©ãããŠãããã®ã¯ãã¹ãŠãåã®OBã§äœ¿çšã§ããŸãã äŸïŒ
var name = 'Todd'; var scope1 = function () {
éæ¹åã§ã¯ãããã¯æ©èœããŸããã
ãååããžã®ãªã³ã¯ã¯ãã€ã§ãè¿ãããšãã§ããŸããã倿°èªäœã¯è¿ããŸããã
OBã·ãŒã±ã³ã¹
OBã®ã·ãŒã±ã³ã¹ã¯ãéžæããæ©èœã®OBãæ±ºå®ããŸãã å®çŸ©ãããå颿°ã«ã¯ç¬èªã®OMããããå¥ã®å
éšã§å®çŸ©ãããå颿°ã«ã¯ç¬èªã®OMããããå€éšOMã«æ¥ç¶ãããŠããŸã-ããã¯ã·ãŒã±ã³ã¹ãŸãã¯ãã§ãŒã³ã§ãã ã³ãŒãå
ã®äœçœ®ã¯ãOBãå®çŸ©ããŸãã 倿°ã®å€ã決å®ãããšãJSã¯æ¢ããŠãã颿°ããªããžã§ã¯ãããŸãã¯å€æ°ãèŠã€ãããŸã§ãæãæ·±ãåã蟌ã¿OBããå€åŽã«åãã£ãŠãããŸãã
ç絡
圌ãã¯èªåœOBãšå¯æ¥ãªåçé¢ä¿ã«ãããŸãã è¯ã䜿çšäŸã¯ã颿°åç
§ãè¿ãããšã§ãã å
éšã§å®çŸ©ããããã®ã«ã¢ã¯ã»ã¹ã§ããããã«ããããŸããŸãªãªã³ã¯ãåŒãåºãããšãã§ããŸãã
var sayHello = function (name) { var text = 'Hello, ' + name; return function () { console.log(text); }; };
ããã¹ãã衚瀺ããã«ã¯ãsayHello颿°ãåŒã³åºãã ãã§ã¯äžååã§ãã
sayHello('Todd');
颿°ã¯é¢æ°ãè¿ãã®ã§ãæåã«é¢æ°ãå²ãåœãŠãŠããåŒã³åºãå¿
èŠããããŸãã
var helloTodd = sayHello('Todd'); helloTodd();
ãã¡ãããçŽæ¥ã¯ããŒãžã£ãåŒãèµ·ããããšãã§ããŸãïŒ
sayHello('Bob')();
AngularJSã¯ã$ compileã¡ãœããã§åæ§ã®åŒã³åºãã䜿çšããŸãããã®å ŽåãçŸåšã®OBãžã®ãªã³ã¯ãæž¡ãå¿
èŠããããŸãã
$compile(template)(scope);
ç°¡åã«èšããšãã³ãŒãã¯æ¬¡ã®ããã«ãªã£ãŠãããšæšæž¬ã§ããŸãã
var $compile = function (template) {
颿°ã¯ãã¯ããŒãžã£ãŒã«ãªãããã«äœãè¿ãå¿
èŠã¯ãããŸããã çŸåšã®OBã®å€éšãã倿°ã«ã¢ã¯ã»ã¹ãããšãã¯ããŒãžã£ãŒãäœæãããŸãã
OVãšãããã
åOBã¯ã颿°ã®åŒã³åºãæ¹æ³ã«å¿ããŠããthisã倿°ã«å€ãå²ãåœãŠãŸãã ç§ãã¡ã¯ãã¹ãŠthisããŒã¯ãŒãã䜿çšããŸãããããããã©ã®ããã«æ©èœããåŒã³åºãã®éããäœã§ããããå
šå¡ãçè§£ããŠããããã§ã¯ãããŸããã ããã©ã«ãã§ã¯ãæãå€åŽã®OBã®ãªããžã§ã¯ãã§ããçŸåšã®ãŠã£ã³ããŠãåç
§ããŸãã ããŸããŸãªåŒã³åºãããã®å€ãã©ã®ããã«å€æŽãããã®äŸïŒ
var myFunction = function () { console.log(this);
ãã®å€ã«ã¯åé¡ããããŸãã æ¬¡ã®äŸã§ã¯ãåã颿°å
ã§å€ãšOBã倿Žã§ããŸãã
var nav = document.querySelector('.nav');
ããã§ã¯ãã€ãã³ããã³ãã©ããåŒã³åºãããªãæ°ããOBãäœæããŸãããã€ãŸãããŠã£ã³ããŠãªããžã§ã¯ããåç
§ããŸãã ããšãã°ãæ··ä¹±ããªãããã«ããã®å€ãå¥ã®å€æ°ã«ä¿åã§ããŸãã
var nav = document.querySelector('.nav');
.callïŒïŒã. applyïŒïŒãããã³.bindïŒïŒã䜿çšããŠOBã倿ŽããŸã
å¿
èŠã«å¿ããŠOSã倿Žããå¿
èŠãããå ŽåããããŸãã
äŸã§ã¯ïŒ
var links = document.querySelectorAll('nav li'); for (var i = 0; i < links.length; i++) { console.log(this);
ãã®å€ã¯å埩èŠçŽ ã«ã¯é©çšããããäœãåŒã³åºããããOBã倿ŽãããããŸããã OBã倿Žããæ¹æ³ãèŠãŠã¿ãŸãããïŒããæ£ç¢ºã«ã¯ã颿°åŒã³åºãã®ã³ã³ããã¹ãã倿ŽããŸãïŒã
.callïŒïŒããã³.applyïŒïŒ
.callïŒïŒããã³.applyïŒïŒã¡ãœããã«ãããOBã颿°ã«æž¡ãããšãã§ããŸãã
var links = document.querySelectorAll('nav li'); for (var i = 0; i < links.length; i++) { (function () { console.log(this); }).call(links[i]); }
ãã®çµæãå埩ãããèŠçŽ ã®å€ãããã«æž¡ãããŸãã .callã¡ãœããïŒscopeãarg1ãarg2ãarg3ïŒã¯ã³ã³ãã§åºåãããåŒæ°ã®ãªã¹ããåãåãã.applyïŒscopeã[arg1ãarg2]ïŒã¡ãœããã¯åŒæ°ã®é
åãåãåããŸãã
.callïŒïŒãŸãã¯.applyïŒïŒã¡ãœããã¯é¢æ°ãåŒã³åºãããšãèŠããŠããããšãéèŠã§ãã
myFunction();
let .callïŒïŒé¢æ°ãåŒã³åºããŠãã©ã¡ãŒã¿ãŒãæž¡ããŸãã
myFunction.call(scope);
.bindïŒïŒ
.bindïŒïŒã¯é¢æ°ãåŒã³åºããŸããããåŒã³åºãåã«å€æ°ã®å€ãåã«ãã€ã³ãããŸãã ãåãã®ãšããã颿°åç
§ã«ãã©ã¡ãŒã¿ãŒãæž¡ãããšã¯ã§ããŸããã
ããã¯ãæ°ãããã¹ãããã颿°ãäœæããããšã§ä¿®æ£ã§ããŸãã
nav.addEventListener('click', function () { toggleNav(arg1, arg2); }, false);
ããããããã§ãOMã«å€æŽãããã远å ã®é¢æ°ãäœæãããããã©ãŒãã³ã¹ã«æªåœ±é¿ãåãŒããŸãã ãããã£ãŠã.bindïŒïŒã䜿çšããŸãããã®çµæãåŒæ°ãæž¡ããŠé¢æ°ãåŒã³åºãããªãããã«ããããšãã§ããŸãã
nav.addEventListener('click', toggleNav.bind(scope, arg1, arg2), false);
ãã©ã€ããŒãããã³ãããªãã¯ãšãŒãžã§ã³ã
JavaScriptã§ã¯ãä»ã®å€ãã®èšèªãšã¯ç°ãªãããããªãã¯ããã³ãã©ã€ããŒãOSã®æŠå¿µã¯ãããŸããããã¯ããŒãžã£ãŒã䜿çšããŠãããããšãã¥ã¬ãŒãã§ããŸãã ãã©ã€ããŒãOBãäœæããã«ã¯ãä»ã®é¢æ°ã§é¢æ°ãã©ããããŸãã
(function () {
æ©èœã远å ããŸãã
(function () { var myFunction = function () {
ãã ãããã®é¢æ°ãçŽæ¥åŒã³åºãããšã¯ã§ããŸããã
(function () { var myFunction = function () {
ããã«ãã©ã€ããŒãOBããããŸãã ãããªãã¯OVãå¿
èŠãªå Žåã¯ã次ã®ããªãã¯ã䜿çšããŸãã ãã®ã¢ãžã¥ãŒã«ã«é¢é£ãããã¹ãŠãå«ãã¢ãžã¥ãŒã«åå空éãäœæããŸãã
returnãã£ã¬ã¯ãã£ãã¯ãã°ããŒãã«OBã§å
¬éãããŠããã¡ãœãããè¿ããŸãã ããã«ããããã¯ç®çã®ããŒã ã¹ããŒã¹ã«é¢é£ããŠããŸãã ã¢ãžã¥ãŒã«ã«ã¯ãå¿
èŠãªæ°ã®ã¡ãœãããå«ããããšãã§ããŸãã
ã°ããŒãã«OMã®ãã¹ãŠã®ã¡ãœããããã³ãããŠæ±æããå¿
èŠã¯ãããŸããã ããã¯ã颿°ãè¿ããã«ãã©ã€ããŒãOBãç·šæããæ¹æ³ã§ãã
var Module = (function () { var privateMethod = function () { }; return { publicMethod: function () { } }; })();
publicMethodãåŒã³åºãããšã¯ã§ããŸãããprivateMethodãå®è¡ããããšã¯ã§ããŸãã-ãã©ã€ããŒãOBãåç
§ããŸãã ãããã®é¢æ°ã«ã¯ãaddClassãremoveClassãAjax / XHRåŒã³åºããé
åããªããžã§ã¯ããªã©ã奜ããªãã®ãäœã§ãå
¥ããããšãã§ããŸãã
è峿·±ãã²ããã¯ã1ã€ã®OBå
ã§ãã¹ãŠã®é¢æ°ãä»ã®OBã«ã¢ã¯ã»ã¹ã§ããããããããªãã¯ã¡ãœããããã°ããŒãã«OBã§äœ¿çšã§ããªããã©ã€ããŒãã¡ãœãããåŒã³åºãããšãã§ããããšã§ãã
var Module = (function () { var privateMethod = function () { }; return { publicMethod: function () {
ããã«ãããã³ãŒãã®å¯Ÿè©±æ§ãšã»ãã¥ãªãã£ãåäžããŸãã å®å
šã®ããã«ããã¹ãŠã®é¢æ°ãã°ããŒãã«OBã«ãã³ããã䟡å€ã¯ãªããããåŒã³åºãå¿
èŠã®ãªã颿°ã誀ã£ãŠåŒã³åºãããããšã¯ãããŸããã
ãã©ã€ããŒãã¡ãœãããšãããªãã¯ã¡ãœããã䜿çšããŠãªããžã§ã¯ããè¿ãäŸïŒ
var Module = (function () { var myModule = {}; var privateMethod = function () { }; myModule.publicMethod = function () { }; myModule.anotherPublicMethod = function () { }; return myModule;
ãããªãã¯ã¡ãœãããšãããªãã¯ã¡ãœãããèŠèŠçã«åºå¥ããããã«ããã©ã€ããŒãã¡ãœããã®ååã«äžç·ãä»ãããšäŸ¿å©ã§ãã
var Module = (function () { var _privateMethod = function () { }; var publicMethod = function () { }; })();
ãªã¹ãå
ã®ã¡ãœãããè¿ãã颿°ãžã®ãªã³ã¯ãè¿ãããšã䟿å©ã§ãã
var Module = (function () { var _privateMethod = function () { }; var publicMethod = function () { }; return { publicMethod: publicMethod, anotherPublicMethod: anotherPublicMethod } })();