JavaScript命名空间
类别:Web前端 浏览量:2089
时间:2014-7-24 JavaScript命名空间
JavaScript命名空间
由于JavaScript没有文件作用域,不同的函数分散在不同的文件中,甚至由不同的人编写,重名的概率大大增加。是不是足够小心就可以了呢?也不尽然,还有些意外情况,比如经常会用到继承。我们可以通过C#、Java类似的命名空间解决这些问题。
JS中命名空间机制的实现方式
1、通过函数(function)创建
这是一种比较常见的写法,通过声明一个function实现,函数里设置初始变量,公共方法写入prototype,如:
var NameSpace = NameSpace || {};
/*
Function
*/
NameSpace.Hello = function() {
this.name = 'world';
};
NameSpace.Hello.prototype.sayHello = function(_name) {
return 'Hello ' + (_name || this.name);
};
var hello = new NameSpace.Hello();
hello.sayHello();
或者
var NameSpace = NameSpace || {};
NameSpace.Hello = new function() {
var self = this;
var name = 'world';
self.sayHello = function(_name) {
return 'Hello ' + (_name || name);
};
};
2、通过JSON对象创建Object
/*
Object
*/
var NameSpace = NameSpace || {};
NameSpace.Hello = {
name: 'world'
, sayHello: function(_name) {
return 'Hello ' + (_name || this.name);
}
};
调用
NameSpace.Hello.sayHello('JS');
3、通过闭包和Object实现
在闭包中声明好所有变量和方法,并通过一个JSON Object返回公有接口:
var NameSpace = NameSpace || {};
NameSpace.Hello = (function() {
//待返回的公有对象
var self = {};
//私有变量或方法
var name = 'world';
//公有方法或变量
self.sayHello = function(_name) {
return 'Hello ' + (_name || name);
};
//返回的公有对象
return self;
}());
或者
var NameSpace = NameSpace || {};
NameSpace.Hello = (function() {
var name = 'world';
var sayHello = function(_name) {
return 'Hello ' + (_name || name);
};
return {
sayHello: sayHello
};
}());
标签:命名空间 javascript
您可能感兴趣
- JavaScript命名空间
- php命名对照表(PHP命名空间用法实例分析)
- php命名空间真的存在吗(PHP中命名空间的使用例子)
- php在没有命名空间之前是怎么调(php命名空间设计思想、用法与缺点分析)
- laravel跨域设置(解决Laravel自定义类引入和命名空间的问题)
- php如何设置命名空间(PHP进阶学习之命名空间基本用法分析)
- laravel 权限管理(修改Laravel自带的认证系统的User类的命名空间的步骤)
- php中命名空间常用吗(PHP命名空间定义与用法实例分析)
- python创建hbase命名空间(python使用phoenixdb操作hbase的方法示例)
- 五代十国南唐历代国君(五代十国南唐历代国君)
- 飞机引进工程师杨隆 匠人匠心,只争朝夕(飞机引进工程师杨隆)
- 三人行,她们是育人路上的 铁三角 团队(她们是育人路上的)
- 阴阳师 孟婆山兔CP不倒 新皮肤草稿 孟婆兔 让痒痒鼠点赞(阴阳师孟婆山兔CP不倒)
- 阴阳师孟婆御魂推荐 孟婆御魂搭配毕业套(阴阳师孟婆御魂推荐)
- 袁冰妍终于接到新剧,饰演反追男主,看到合作演员 眼光果然毒辣(袁冰妍终于接到新剧)
热门推荐
- thinkphp框架多文件上传完整代码(Thinkphp5 自定义上传文件名的实现方法)
- idea安装mybatis(IDEA使用mybatis-generator及配上mysql8.0.3版本遇到的bug)
- centos安装php5.6(Centos7 Yum安装PHP7.2流程教程详解)
- python钉钉机器人(python钉钉机器人运维脚本监控实例)
- css什么时候可以用百分比(浅谈CSS中的百分比)
- laravelblade组件(laravel 验证错误信息到 blade模板的方法)
- C# #define条件编译
- mysql慢日志查询会输出插入语句吗(MySQL三种日志有啥用?如何提高MySQL并发度?)
- docker部署golang(如何使用Docker部署Go Web应用的实现)
- 虚拟主机有几种(如何辨别虚拟主机的好坏?)