关于Javascript的命名空间

jcins 2011-10-07 01:29:48

// 声明一个全局对象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")
...全文
222 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Acesidonu 2011-10-07
  • 打赏
  • 举报
回复
要细心些。
qp7711 2011-10-07
  • 打赏
  • 举报
回复
原来这个还有命名空间的吖。。。呵。
豆虫 2011-10-07
  • 打赏
  • 举报
回复
今日happy最后一天 明日准备上班 收假喽~~~
gleams 2011-10-07
  • 打赏
  • 举报
回复
这个可以满足你的需求

<!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>
rainsilence 2011-10-07
  • 打赏
  • 举报
回复
呵呵,祝lz国庆快乐
jcins 2011-10-07
  • 打赏
  • 举报
回复
晕了~是执行顺序颠倒了,没有引用脚本文件~

87,989

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧