代码改变世界

(转)在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");
  • Define the class, variables and others in your namespace
  • 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");
    };
  • Use it when you use
  • <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.

    谢谢浏览!