JavaScriptでのグローバル変数の処理
3797 ワード
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;
}