// 声明一个全局对象RegisterNameSpace函数,参数为名称空间全路径,如"cnblogs.blog"
RegisterNameSpace = function (fullName) {
// 将命名空间切成N部分
var nsArray = fullName.split('.');
var strEval = "";
var strNS = "";
for (var i = 0; i < nsArray.length; i++) {
if (i != 0) {
strNS += ".";
}
strNS += nsArray[i];
// 依次创建构造命名空间对象(假如不存在的话)的语句
strEval += "if (typeof(" + strNS + ") == 'undefined') " + strNS + " = new Object();"
}
if (strEval != "") eval(strEval);
}RegisterNameSpace("cnblogs.blog");
RegisterNameSpace("cnblogs.news");
RegisterNameSpace("cnblogs.group");cnblogs.news.Article = function () {
var _this = this;
this.title = null;
this.content = null;
this.show = function () {
document.write("<h1>" + _this.title + "</h1>");
document.write("<p>" + _this.content + "</p>");
}
}关于命名空间,网上最多的都是以上一段。但是,用网上提供的方法实例化,打开页面后总是提示错误。//  实例化一个对象
var article = new cnblogs.news.Article();
//  给对象的属性赋值
article.title = "这是文章标题";
article.content = "这是文章内容";
//  调用对象的方法
article.show();
提示以下错误
网页错误详细信息
消息: 'cnblogs' 未定义
行: 99
字符: 3
代码: 0
URI: http://192.168.2.8/Manager/Login.aspx
我想要实现下面这样实例化的方式,是不是只能用命名空间,代码越简洁越好。谢谢大家!
var t=new AjaxCenter.Execute("str","parameter");
var t1=new AjaxCenter.Module("str")

解决方案 »

  1.   

    这个可以满足你的需求<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>javascript命名空间</title>
    <script type="text/javascript">var AjaxCenter = window.AjaxCenter || {};AjaxCenter.Execute = function(str,parameter){
     this.str = str;
     this.parameter = parameter;
     this.printInfo = function(){
       alert(this.str+"->"+this.parameter);
     }
    }

    </script>
    </head><body>
    <script type="text/javascript">
      var t =  new AjaxCenter.Execute("str1","parameter2");
       t.printInfo();
    </script>
    </body>
    </html>
      

  2.   

    今日happy最后一天 明日准备上班 收假喽~~~