ä¾åé¢ä¿ã®å¾ªç°ã¨ã©ã¼æå¶
ContainerJSã§ã¯ãã³ã³ãã¼ãã³ãã®ä¾åé¢ä¿ã循ç°ãã¦ããå ´åã§ãåç´ãªå¾ªç°ã§ããã°ã¨ã©ã¼ã¨ããã«ä¾åé¢ä¿ã解決ã§ããããã¾ãããã¨ãã°ä»¥ä¸ã®ãããªãã¿ã¼ã³ã§ããã°åé¡ãªã解決å¯è½ã§ãã
function main() { // 循ç°åç §ããã³ã³ãã¼ãã³ãã以ä¸ã®ãã¿ã¼ã³ã§ããã°åé¡ãªãä¾åé¢ä¿ã解決ã§ããã var c = new container.Container( function( binder ) { // ã³ã³ãã¼ãã³ã "mii" binder.bind( Kitten ).to( "mii" ).inject({ // "tora" ãã¤ã³ã¸ã§ã¯ã friend : container.component( "tora" ), name : "mii" }); // ã³ã³ãã¼ãã³ã "tora" binder.bind( Kitten ).to( "tora" ).inject({ // "tora" ãã¤ã³ã¸ã§ã¯ã friend : container.component( "mii" ), name : "tora" }); }); var out = document.getElementById("out"); out.innerHTML += c.get("mii").toString() + "<br/>"; out.innerHTML += c.get("tora").toString() + "<br/>"; } function Kitten() { this.friend = null; this.name = null; } Kitten.prototype = { toString : function() { return "name=" + this.name + " friend=" + this.friend.name; } }
å é¨çã«ã¯ããä¾åã¢ã¸ã¥ã¼ã«ã®ã¤ã³ã¸ã§ã¯ã·ã§ã³ãè¡ãåã«ãã³ã³ãã¼ãã³ããä½æããã£ã·ã¥ã¨ãã¦ç»é²ãã¦ãããã¨ã§å¾ªç°ã¨ã©ã¼ãåé¿ãããããã«ãªã£ã¦ãã¦ãâã®å ´åã§ããã°ã
- "mii"ã¨ãã¦ç»é²ãããã³ã³ã¹ãã©ã¯ã¿ãå¼ã³åºãããã¤ã³ã¹ã¿ã³ã¹ãä½æãããã
- "mii"ã¯ã·ã³ã°ã«ãã³ãªã®ã§ãã¤ã³ã¹ã¿ã³ã¹ããã£ãã·ã¥ã«ç»é²ãããã
- "mii"ã®inject()ã§æå®ãããã³ã³ãã¼ãã³ãã注å
¥ãããã
- friendã¨ãã¦"tora"ã³ã³ãã¼ãã³ãã«ä¾åãã¦ããã®ã§ã"tora"ãã³ã³ããããgetãããã
- "mii"ã¨åæ§ã«ã¤ã³ã¹ã¿ã³ã¹ãä½æããããã£ã·ã¥ã«ç»é²ãããã
- "tora"ã®inject()ã§æå®ãããã³ã³ãã¼ãã³ããæ³¨å ¥ãããã"mii"ã¯ãã§ã«ãã£ãã·ã¥ãç»é²ããã¦ããã®ã§ãã£ãã·ã¥ã®å¤ãæ³¨å ¥ãããã
ã¨ããæµãã§ãæçµçã«æå¾ ãããã³ã³ãã¼ãã³ããä¿æããã¤ã³ã¹ã¿ã³ã¹ãä½æããã¾ãã
ãã ãããã®æ¹å¼ã ã¨ä»¥ä¸ã®ãããªåé¡ã¯ããã¾ãã
- ã³ã³ã¹ãã©ã¯ã¿ã¤ã³ã¸ã§ã¯ã·ã§ã³ã¯ã§ããªãã
- ä¾åé¢ä¿ã®è§£æ±ºãªãã«ã¤ã³ã¹ã¿ã³ã¹ãçæã§ããå¿ è¦ãããããã
- åæåé¢æ°å¼ã³åºãã®ã¿ã¤ãã³ã¯ã§ã¯ãã¤ã³ã¸ã§ã¯ã·ã§ã³ãããã³ã³ãã¼ãã³ãã®ä¾åé¢ä¿ã解決ããã¦ããªãå ´åãããã
function main() { var c = new container.Container( function( binder ) { // ã³ã³ãã¼ãã³ã "mii" binder.bind( Kitten ).to( "mii" ).inject({ // "tora" ãã¤ã³ã¸ã§ã¯ã friend : container.component( "tora" ), name : "mii" }).initialize("init"); // åæåã¡ã½ããã¨ãã¦"init"ãå®è¡ // ã³ã³ãã¼ãã³ã "tora" binder.bind( Kitten ).to( "tora" ).inject({ // "tora" ãã¤ã³ã¸ã§ã¯ã friend : container.component( "mii" ), name : "tora" }).initialize("init"); // åæåã¡ã½ããã¨ãã¦"init"ãå®è¡ }); var out = document.getElementById("out"); c.get("mii"); } // ãã¹ãç¨ã¯ã©ã¹ function Kitten() { this.friend = null; this.name = null; } Kitten.prototype = { init : function() { //åæåã¡ã½ããã¨ãã¦å¼ã³åºãããé¢æ°ã //循ç°åç §ãããå ´åãä¾åã³ã³ãã¼ãã³ãã®ã¤ã³ã¸ã§ã¯ã·ã§ã³ã¯å®äºãã¦ããªãå ´åãããã var out = document.getElementById("out"); out.innerHTML += this.toString() + "<br/>"; }, toString : function() { return "name=" + this.name + " friend=" + this.friend.name; } }
ã¨ãããã¨ã§ã注æãä»æ¥ã¯2ã¤ãã®åé¡ã«ã¯ã¾ã£ã¦ã30åã»ã©æ©ãã ãã»ã»ã»ãorzã