JS中避免命名冲突
来源:互联网 发布:protobuf c windows 编辑:程序博客网 时间:2024/05/16 16:10
一个项目可能由多个工程师完成,一个人可能需要完成多个JS文件。
在这个情况下,如何避免命名冲突呢?这个时候我们需要对全局变量进行控制,进行切忌全局变量使用泛滥。
方法1:使用匿名函数将包含脚本。让变量的作用域控制在匿名函数里面。
(function(){
var a=1;
var b=2;
})()
a,b都是包在这个匿名函数function里的变量,作用域不再是window,而是局限在函数内部。
由于变量被各自包含在不同的匿名函数中,也就不会出现冲突了。
但是不同脚本里的变量就不能互相通信。处理方式:在window中定义一个全局变量,如下:
var str;
(function(){
var str=a=2;
})()
(function(){
alert(str);
})():
上面的例子中,使用普通的变量作为全局变量会导致扩展性差。
方法2:使用一个对象类型的变量作为全局变量。
var Globle{};
(function(){
Globle.str2=a;
Globle.str1=b;
})()
(function(){
Globle.str2=a;
Globle.str3=b;
})()
我们看到上面,虽然用一个Globle变量,但是有可能出现两个方法中都绑定同一个属性str2,导致变量被替换。
方法3:使用命名空间+对象型全局变量
在不同的命名空间下,使用相同的对象类型变量来存放全局变量
(function(){
Globle.A={};
Globle.A.str=1;
})()
(funciton(){
Globle.B={};//一级命名空间 Globle.B.B={}是二级命名空间
Globle.B.str=2;
})()
方法3升级版:定义命名空间函数,在需要使用命名空间的匿名函数中调用
var Globle={};
Globle.namespace=function(str){
var arr=str.split("."),
o=Globle;
if(arr[0]="Globle") var i=1;
else var i=0;
for(i;i<arr.length;i++){
o[ arr[i] ] = o[ arr[i] ] || {};//当o[ arr[i] ]存在时就等于o[ arr[i] ],不存在,即最后一个的时候就等于空对象{}
o=o.[ arr[i] ]
}
}
理解:
str=Globle.A.ar;
arr=[Globle,A,ar];
o=Globle;
o[A]=o[A];
o=Globle=Globle[A]=Globle.A;
Globle[A][ar]=Globle[A][ar]=Globle.A.ar;
str=A.ar;
arr=[A,ar];
o=Globle;
o[arr[0]]=o[A];o[A]=o[A];
o[ar]=o[ar];
o=Globle[A][ar]=Globle.A.ar;
在其他地方的调用:
Globe.namespace("A.str");
Globle.namespace("B.str");
- JS中避免命名冲突
- JS中避免命名冲突
- 如何避免JS变量命名冲突
- js避免变量冲突问题,使用命名空间
- 如何避免javascript命名冲突
- 避免JS冲突
- 如何让js不产生冲突,避免全局变量的泛滥,合理运用命名空间
- 如何让js不产生冲突,避免全局变量的泛滥,合理运用命名空间
- jquery中,多js文件解决命名冲突
- 避免XML节点命名冲突——命名空间
- Node.js 全局变量命名空间与命名空间中require模块的冲突
- js省市级联--避免id冲突
- 防止污染Javascript全局环境,避免命名冲突
- 使用类或命名空间来避免名字冲突
- OC阅读笔记二:命名规范,避免冲突
- js中避免函数名和变量名跟别人冲突(1)
- js中避免函数名和变量名跟别人冲突
- jQuery 中 $ 避免跟其它库冲突
- leetcode 242. Valid Anagram 颠倒字符的字符串的有效性判定 + HashMap
- Cordova Error: Could not find an installed version of Gradle
- Centos7 开机自动启动服务
- 函数式编程笔记(三)——java8实践
- 初学JS小记(一)——变量的作用域
- JS中避免命名冲突
- 极光推送
- Spark Programming Guide(五)
- 求俩个数的和,要求不能用加减乘除四则运算。
- 挑战程序竞赛系列(78):4.3 2-SAT(2)
- android 自动化测试
- [Python] 500万彩票网微信推送中奖号码
- python开源库——h5py快速指南
- HDU