(转)在Js中应用命名空间
2011-07-08 17:22 音乐让我说 阅读(305) 评论(0) 编辑 收藏 举报转载自:http://www.cnblogs.com/anytao/archive/2010/10/22/anytao-devstory-15-use-namespace-in-js.html
Introduction
How to have a better code organization? When your software become bigger and bigger, the code will torture you all the time. So, the smart guy innovate the Namespace to handle this issue. For example, in .NET world, we define the class in scope of namespace:
namespace Anytao.Common
{
public class Console
{
public static void Read(string msg)
{
}
}
}
Then, we can use Console as below:
Anytao.Common.Console.Read("Hello, world.");
It will bring the following benefit:
- Better code organization
- Avoid naming conflict. For example, If we have another Console in the same assembly, it will cause error without namespace control. Now, we can absolutely separate naming by namespace.
Anytao.Common.Console.Read("Hello, world.");
System.Console.Read();
Namespace in JavaScript
However, there is no language level support in JavaScript. It will cause a lot of problem and mess the process of development. Here is a experience in our project.
/* Define the NS in imxiqi.js */
var X8JS = {};
X8JS.ns = function (path) {
var arr = path.split(".");
var ns = "";
for (var i = 0; i < arr.length; i++) {
if (i > 0)
ns += ".";
ns += arr[i];
eval("if(typeof(" + ns + ") == 'undefined') " + ns + " = new Object();");
}
};
How to use?
- Reference the imxiqi.js file in your page head.
<scriptsrc="http://www.cnblogs.com/static/js/imxiqi.js"type="text/javascript"></script>
- Register the namespace when you use
X8JS.ns("XLR8.feed");
X8JS.ns("XLR8.feed");
X8JS.ns("Ethos.common");
XLR8.feed =
{
alert: function (msg) {
alert(msg);
},
load: function () {
}
};
Ethos.common.copyright = function BindData(data) {
$("#copyright").html( data + " / Ethos");
};
<script language="javascript" type="text/javascript">
$(document).ready(function () {
XLR8.feed.alert("Hello");
XLR8.feed.load();
Ethos.common.copyright("Anytao");
})
</script>
Hey. It’s simple and useful.
谢谢浏览!
作者:音乐让我说(音乐让我说 - 博客园)
出处:http://music.cnblogs.com/
文章版权归本人所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。