JavaScriptでのグローバル変数の処理


jsは変数の衝突を避ける方法
/* 
		1.  js      
		           ,                         
	 */
		(function(){
			var str = "hello world!";
			alert(str);
		})();
	/* 
		1.            
		        window                         
		            ,       ,                   
		             ,                  
 	*/
		var GLOBAL = {};
		(function(){
			GLOBAL.str = "hello world2!";
			alert(GLOBAL.str);
		})();
	/*
		2.        
	 	                      
	 	                                   
	 */

	 (function(){
	 	GLOBAL.A = {};
	 	GLOBAL.A.name = "alice";
	 	alert(GLOBAL.A.name);
	 })();

	 /*
		3.       
	 */
	  (function(){
	 	GLOBAL.B = {};
	 	GLOBAL.B.DATE = {};
	 	GLOBAL.B.DATE.year = 2016;
	 	GLOBAL.B.DATE.month = 4;
	 	alert(GLOBAL.B.DATE.month);
	 })();
	</script>
 	<script>
	/*
		4.        
		                 ,      
	 */
	 var GLOBAL = {};
	 GLOBAL.namespace = function(str){
	 	var arr = str.split("."),o = GLOBAL;
	 	for(i = (arr[0] == "GLOBAL") ? 1 : 0;i < arr.length; i++){
	 		o[arr[i]] = o[arr[i]] || {};
	 		o = o[arr[i]];
	 	}
	 }
	 GLOBAL.namespace("CLASS.PER");
	 GLOBAL.CLASS.PER.name = "lefeier";
	 console.log('GLOBAL : ' + GLOBAL);
	 alert(GLOBAL.CLASS.PER.name);
	</script>
	
	<script>
		/* 5.       
		window.onload                
		DOMReady                         js        js         */


		/* 6.JavaScript    
		   1. base   
		           js   ,       
		     DOM EVENT      onXXX、attachEvent addEventListener      
		   2. common 
		            
		   3. page 
		             
		 */

		 //   base    

		 /*          */
		 function stopPropagation(e){
		 	e = window.event || e;
		 	if(document.all){/* IE */
		 		e.cancelable = true;
		 	}else{
		 		e.stopPropagation();
		 	}
		 }
		 /*        */
		 function on(node, eventType, handler){
		 	node = typeof node == "string" ? document.getElementById(node) : node;
		 	if(document.all){
		 		node.attachEvent("on"+eventType, handler); //   IE         
		 	}else{
		 		node.addEventListener(eventType, handler, false);
		 	}
		 }
		 var btn = document.getElementById("btn");
		 on(btn,"click",function(){
		 	alert("button clicked!");
		 });

		 /*       class         */
		function getClass(tagname, className) { //tagname   ,className class  
         //getElementsByClassName      
         var tagname = document.getElementsByTagName(tagname);  //      
         var tagnameAll = [];     //                 
         for (var i = 0; i < tagname.length; i++) {     //       
            if (tagname[i].className.split(" ")[0] == className) {
            //         class         ,    tagnameAll
                tagnameAll[tagnameAll.length] = tagname[i];
                }
            }
           return tagnameAll;   
    	}
 /* getElementsByClassName      */
        function getElementsByClassName(ele, className){
        	if(ele.getElementsByClassName){
        		return ele.getElementsByClassName(className);
        	}else{ //IE 7 8 
        		var elements = ele.getElementsByTagName('*');
        		var result = [], element;
        		for(var i = 0, element = elements[i]; i <  elements.length;i++){
        			if(hasClass(elements[i], className)){
        				result.push(elements[i]);
        			}
        		}
        		return result;
        	}
        }
        function hasClass(ele, className){
			var classNameStr = ele.className;
			classNameStr = classNameStr.trim();
			className = className.trim();
			var classItms = classNameStr.split(' ');
			for(var i = 0; i < classItms.length; i++){
				if(className === classItms[i])return true;
			}
			return false;
        }