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
您可能感兴趣
- php如何设置命名空间(PHP进阶学习之命名空间基本用法分析)
- JavaScript命名空间
- php中命名空间常用吗(PHP命名空间定义与用法实例分析)
- laravel 权限管理(修改Laravel自带的认证系统的User类的命名空间的步骤)
- php命名对照表(PHP命名空间用法实例分析)
- php在没有命名空间之前是怎么调(php命名空间设计思想、用法与缺点分析)
- python创建hbase命名空间(python使用phoenixdb操作hbase的方法示例)
- php命名空间真的存在吗(PHP中命名空间的使用例子)
- laravel跨域设置(解决Laravel自定义类引入和命名空间的问题)
- 《小敏家》金波想要复婚 这只是他圈套的第1步,更可恶的在后面(小敏家金波想要复婚)
- 小敏家 剧情离谱一锅乱炖,但他们俩绝对是这部剧的一大 亮点(剧情离谱一锅乱炖)
- 《倚天屠龙记》再遭翻拍,关晓彤主演赵敏,蒋劲夫演张无忌,你怎么看(倚天屠龙记再遭翻拍)
- 吴启华与曾舜晞两代张无忌同框,戏里经典的他却没活出原著的潇洒(吴启华与曾舜晞两代张无忌同框)
- 经常发这三种 朋友圈 的人,要迅速屏蔽(经常发这三种朋友圈)
- 有种尴尬叫朋友圈忘屏蔽,大学生上演社死现场,父母亲自下场吐槽(有种尴尬叫朋友圈忘屏蔽)
热门推荐
- sql语句去除重复记录(使用SQL语句去掉重复的记录两种方法)
- 宝塔面板错误代码3(宝塔面板打开网站No input file specified如何解决?)
- laravel架构设置(Laravel框架查询构造器 CURD操作示例)
- 怎样用sql删除表里的重复数据(sql 删除表中的重复记录)
- 如何禁止按回车键提交表单
- mysql的默认数据库例子在哪里(修改MySQL8.0 默认的数据目录快捷操作无配置)
- docker配置和启动(Docker的安装与配置命令代码实例)
- css3动画效果图(CSS3 三维变形实现立体方块特效源码)
- 阿里云对象存储oss收费吗(阿里云存储服务OSS基本概念)
- mysql全表查询如何优化(MySQL 分组查询的优化方法)