实现前提:与Delphi、C#等语言不同,JavaScript中的类并不是对象的定义,事实上JavaScript中并不存在真正的类,这里的类实际上是用函数模拟实现的,而JavaScript中的函数实际上是一个对象,因此在JavaScript中:一个类就是一个对象。这和传统概念概念极为不同,在JavaScript中,创建某个类的实例实际上就是将类(=对象,记住)复制了一份。看到这里,有点设计模式概念的应该就可以看出来了,在JavaScript中,类机制使用了原型(prototype)模式。

  
// 声明一个全局对象Namespace,用来注册命名空间
Namespace = new Object();// 全局对象仅仅存在register函数,参数为名称空间全路径,如"Grandsoft.GEA"
Namespace.register = function(fullNS)
{// 将命名空间切成N部分, 比如Grandsoft、GEA等var nsArray = fullNS.split('.');var sEval = "";var sNS = "";for (var i = 0; i < nsArray.length; i++){if (i != 0) sNS += ".";sNS += nsArray[i];// 依次创建构造命名空间对象(假如不存在的话)的语句// 比如先创建Grandsoft,然后创建Grandsoft.GEA,依次下去sEval += "if (typeof(" + sNS + ") == 'undefined') " + sNS + " = new Object();"}if (sEval != "") eval(sEval);
}

// 注册命名空间Grandsoft.GEA, Grandsoft.GCM
Namespace.register("Grandsoft.GEA");
Namespace.register("Grandsoft.GCM");// 在Grandsoft.GEA命名空间里面声明类Person
Grandsoft.GEA.Person = function(name, age)
{this.name = name;this.age = age;
}// 给类Person添加一个公共方法show()
Grandsoft.GEA.Person.prototype.show = function()
{alert(this.name + " is " + this.age + " years old!");
}// 演示如何使用类Person
var p = new Grandsoft.GEA.Person("yanglf", 25);
p.show();

转载于:https://www.cnblogs.com/GameCode/archive/2012/11/14/2769625.html

在JavaScript中实现命名空间 (转载)相关推荐

  1. [推荐]在JavaScript中实现命名空间

    注:好久没写了,今天把我在公司内网写的文章拷一份,出来露露脸,刚转Web开发,所以开始学javascript! 在引入命名空间之前,一个令开发人员头疼的问题就是如何防止函数名/类名和其他人的冲突,在一 ...

  2. 在JavaScript中实现命名空间

    在引入命名空间之前,一个令开发人员头疼的问题就是如何防止函数名/类名和其他人的冲突,在一个公司内部项目组之间可以通过命名预定(比如加前缀等)解决这个问题,但是把视线放到整个软件开发领域,在当今协作开发 ...

  3. 在JavaScript中创建命名空间的几种写法

    在JavaScript中全局变量经常会引起命名冲突,甚至有时侯重写变量也不是按照你想像中的顺序来的,可以看看下面的例子: var sayHello = function() {return 'Hell ...

  4. Javascript中的对象和原型(一)(转载)

    面向对象的语言(如Java)中有类的概念,而通过类可以创建任意多个具有相同属性和方法的对象.但是,JavaScript 没有类的概念,因此它的对象也与基于类的语言中的对象有所不同. 要了解面向对象,首 ...

  5. JavaScript中的Window窗口对象【转载】

    本文转载自:http://www.ijavascript.cn/jiaocheng/javascript-window-65.html 他是JavaScript中最大的对象,它描述的是一个浏览器窗口. ...

  6. Javascript中char和int的互相转换的代码(转载)

    Javascript中char和int的互相转换的代码 // Converts an integer (unicode value) to a char function itoa(i) {      ...

  7. 转载:javascript中定义兑现改的5种方式

    本文转载自: http://www.phpfuns.com/scripts/javascript/five-method-define-javascript-object.shtml JavaScri ...

  8. JavaScript中立即执行函数实例详解 转载 作者:李牧羊

    javascript和其他编程语言相比比较随意,所以javascript代码中充满各种奇葩的写法,有时雾里看花,当然,能理解各型各色的写法也是对javascript语言特性更进一步的深入理解.这篇文章 ...

  9. 深入理解javascript中的立即执行函数(function(){…})()

    2019独角兽企业重金招聘Python工程师标准>>> javascript和其他编程语言相比比较随意,所以javascript代码中充满各种奇葩的写法,有时雾里看花,当然,能理解各 ...

最新文章

  1. akaze特征匹配怎么去掉不合适的点_SIFT特征点
  2. javascript之DOM编程正则表达式引入
  3. nginx安装路径,查找配置文件以及如何配置
  4. reactjs错误边界:用来捕获后代组件的错误,渲染出备用页面
  5. Error processing line 1 of vision-1.0.0-py3.6-nspkg.pth AttributeError: ‘NoneType‘ object has no
  6. 也谈虚拟化的服务器选型,以及性能考虑
  7. 1、爱因斯相对论(狭义相对论)
  8. 数据库设计-逻辑结构设计
  9. js return加分号_JavaScript 语句后应该加分号么?
  10. 清除 DNS 缓存( 附全平台详细教程 )
  11. SpringBoot的幕后推手,Java后端知识体系
  12. Ubuntu 安装中文字体
  13. 【有利可图网】PS教程:制造低多边形熊猫头像
  14. html和css的图片怎么加,html+css如何在图片上添加文字
  15. Win7系统彻底删除打印机驱动
  16. OnTimeAction
  17. 怪兽IT学院PHP零基础入门在线学习手册
  18. java基于ssm开发的弹幕视频网站源码
  19. 仅需三步,远程桌面控制公司内网电脑
  20. 51信用卡到底安全吗?

热门文章

  1. 官方demo修改后的webuploader上传预览图片(兼容IE8) github下载回来的有问题
  2. 自定义高效支持点击监听的RecyclerView
  3. S2SH新手框架结构的准备工作只需要导入这些文件
  4. 3月11日Linux课程笔记
  5. Android studio Method of rename whole package(重命名包的方法)
  6. 旧的非flash版Metalink的入口
  7. Best Efforts 1PC 跨库事务
  8. AngularJS资源整理收集
  9. 自然语言处理中的词性标注全称
  10. oracle查询小时差,ORACLE小时段 Connect By的查询,感觉还是有点难度的。