在JavaScript中实现命名空间 (转载)
实现前提:与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中实现命名空间 (转载)相关推荐
- [推荐]在JavaScript中实现命名空间
注:好久没写了,今天把我在公司内网写的文章拷一份,出来露露脸,刚转Web开发,所以开始学javascript! 在引入命名空间之前,一个令开发人员头疼的问题就是如何防止函数名/类名和其他人的冲突,在一 ...
- 在JavaScript中实现命名空间
在引入命名空间之前,一个令开发人员头疼的问题就是如何防止函数名/类名和其他人的冲突,在一个公司内部项目组之间可以通过命名预定(比如加前缀等)解决这个问题,但是把视线放到整个软件开发领域,在当今协作开发 ...
- 在JavaScript中创建命名空间的几种写法
在JavaScript中全局变量经常会引起命名冲突,甚至有时侯重写变量也不是按照你想像中的顺序来的,可以看看下面的例子: var sayHello = function() {return 'Hell ...
- Javascript中的对象和原型(一)(转载)
面向对象的语言(如Java)中有类的概念,而通过类可以创建任意多个具有相同属性和方法的对象.但是,JavaScript 没有类的概念,因此它的对象也与基于类的语言中的对象有所不同. 要了解面向对象,首 ...
- JavaScript中的Window窗口对象【转载】
本文转载自:http://www.ijavascript.cn/jiaocheng/javascript-window-65.html 他是JavaScript中最大的对象,它描述的是一个浏览器窗口. ...
- Javascript中char和int的互相转换的代码(转载)
Javascript中char和int的互相转换的代码 // Converts an integer (unicode value) to a char function itoa(i) { ...
- 转载:javascript中定义兑现改的5种方式
本文转载自: http://www.phpfuns.com/scripts/javascript/five-method-define-javascript-object.shtml JavaScri ...
- JavaScript中立即执行函数实例详解 转载 作者:李牧羊
javascript和其他编程语言相比比较随意,所以javascript代码中充满各种奇葩的写法,有时雾里看花,当然,能理解各型各色的写法也是对javascript语言特性更进一步的深入理解.这篇文章 ...
- 深入理解javascript中的立即执行函数(function(){…})()
2019独角兽企业重金招聘Python工程师标准>>> javascript和其他编程语言相比比较随意,所以javascript代码中充满各种奇葩的写法,有时雾里看花,当然,能理解各 ...
最新文章
- akaze特征匹配怎么去掉不合适的点_SIFT特征点
- javascript之DOM编程正则表达式引入
- nginx安装路径,查找配置文件以及如何配置
- reactjs错误边界:用来捕获后代组件的错误,渲染出备用页面
- Error processing line 1 of vision-1.0.0-py3.6-nspkg.pth AttributeError: ‘NoneType‘ object has no
- 也谈虚拟化的服务器选型,以及性能考虑
- 1、爱因斯相对论(狭义相对论)
- 数据库设计-逻辑结构设计
- js return加分号_JavaScript 语句后应该加分号么?
- 清除 DNS 缓存( 附全平台详细教程 )
- SpringBoot的幕后推手,Java后端知识体系
- Ubuntu 安装中文字体
- 【有利可图网】PS教程:制造低多边形熊猫头像
- html和css的图片怎么加,html+css如何在图片上添加文字
- Win7系统彻底删除打印机驱动
- OnTimeAction
- 怪兽IT学院PHP零基础入门在线学习手册
- java基于ssm开发的弹幕视频网站源码
- 仅需三步,远程桌面控制公司内网电脑
- 51信用卡到底安全吗?
热门文章
- 官方demo修改后的webuploader上传预览图片(兼容IE8) github下载回来的有问题
- 自定义高效支持点击监听的RecyclerView
- S2SH新手框架结构的准备工作只需要导入这些文件
- 3月11日Linux课程笔记
- Android studio Method of rename whole package(重命名包的方法)
- 旧的非flash版Metalink的入口
- Best Efforts 1PC 跨库事务
- AngularJS资源整理收集
- 自然语言处理中的词性标注全称
- oracle查询小时差,ORACLE小时段 Connect By的查询,感觉还是有点难度的。