JavaScript基础原则(转)

原文地址:http://www.lihuai.net/qianduan/js/316.html/

1.JavaScript文件应该放在网页的什么位置

<style type="text/css">
	/* 这里是CSS样式表 */
	...
	..
	.
</style>
<div id="demo">
	<h1>Hello,Welcome to ITLee博客</h1>
	<!-- 这里是一大段html代码 -->
	......
	...
	.
</div>
<script type="text/javascript">
	window.onload = function(){
		//非常多的一段JS代码
		......
		...
		.
	}
</script>

CSS文件放在页头,JavaScript文件放在页尾。基本原则。

2.避免JavaScript代码冲突

<div>
      xxxxxxxx这是一段html代码xxxxxxxxxxx
</div>
<script type="text/JavaScript>
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]];
    }
}
</script>
<!-- JS代码功能:G  -->
<script type="text/JavaScript>
(function(){
    var a=123, str = b=456;
    GLOBAL.namespace("A.CAT");
    GLOBAL.namespace("A.DOG");
    GLOBAL.A.CAT.name = "mao";
    GLOBAL.B.DOG.name = "gou";
    GLOBAL.A.CAT.move = function(){
     ......
    }
    ......
    GLOBAL.A.demo = a;
    GLOBAL.A.test = b;
    ......
})();
</script>
<div>
      xxxxxxxx这是一段html代码xxxxxxxxxxx
</div>
<!-- JS代码功能:O  -->
<script type="text/JavaScript>
(function(){
    var a, d="hello word";
    var i = GLOBAL.A.demo;
    ......
})();
</script>
<div>
      xxxxxxxx这是一段html代码xxxxxxxxxxx
</div>
<!-- JS代码功能:P  -->
<script type="text/JavaScript>
(function(){
    var f, g="hello word";
    var o = GLOBAL.A.str;
    ......
})();
</script>
<div>
      xxxxxxxx这是一段html代码xxxxxxxxxxx
</div>

使用命名空间来解决这个问题。因为命名空间是一个非常有用的功能,我们可以将其定义成一个函数,方便调用。
在代码O和P中分别使用了代码G中用命名空间进行命名的变量,有效的解决了不同代码段之间全局变量覆盖的问题。

3.给JavaScript程序一个统一的入口

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js" ></script>
<div>
	<!-- 这是一段html代码 -->
	xxxxxxxxxxxxxxxx
</div>
<script type="text/javascript">
	//定义命名空间方法
	var GLOBAL={};
	GLOBAL.namespace = function(str){
		for(i=(arr[0]=="GLOBAL") ? 1 : 0; i<arr.length; i++){
			o[arr[i]] = o[arr[i]] || {};
			o = o[arr[i]];
		}
	}	
</script>
<script type="text/javascript">
	function init(){
		//功能:A
		(function(){
			var a = 111; b="hello";
			GLOBAL.namespace("A.CAT");
			GLOBAL.namespace("A.DOG");
			GLOBAL.A.CAT.name = "xiaomao";
			GLOBAL.A.DOG.name = "wangcai";
			GLOBAL.A.CAT.eat = function(){
				
			}
			GLOBAL.A.DOG.eat = function(){

			}
			GLOBAL.A.str2 = a;
			GLOBAL.A.str = b;
		})();
		//功能:B
		(function(){
			var a, c="efg";
			GLOBAL.namespace("B");
			GLOBAL.B.str = c;
		})();
		//功能:C
		(function(){
			var a=GLOBAL.A.str2, b=GLOBAL.A.str;
			var d="this is a demo";
			......
		})();
		//功能:D
		(function(){
			var test=GLOBAL.B.str;
			alert(test);
		})
	}
</script>
<div>
	<!-- 这是一段html代码 -->
	xxxxxxxxxxxxxxxx
</div>
<div>
	<!-- 这是一段html代码 -->
	xxxxxxxxxxxxxxxx
</div>
......
<script>
      $(document).ready(init);
</script>

所有全局作用域的函数都放在了GLOBAL命名空间下,有效控制了window作用域下函数的数量,减小了JS冲突的隐患。然后提供了一个应用部分JS的统一入口函数init,最后在DOMReady的时候调用它。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值