JavaScript的命名空间
2015-10-22 18:04
441 查看
一.什么是命名空间
命名空间(英语:Namespace)表示标识符(identifier)的可见范围。一个标识符可在多个命名空间中定义,它在不同命名空间中的含义是互不相干的。这样,在一个新的命名空间中可定义任何标识符,它们不会与任何已有的标识符发生冲突,因为已有的定义都处于其它命名空间中。
二.命名空间的作用
当一个工程很大时,既有自身的代码,又有引用的外部库,当自身库和外部库中的对象重名时,没有命名空间将无法区分他们。
三.通用命名空间函数
JavaScript语言的语法中,没有内置命名空间,但这种特征非常容易实现。添加到命名空间的属性可能已经存在,所以在添加属性或者创建命名空间之前,我们应该先检查命名空间是否存在。
如果定义FN.fn1.fn2,则:
可以看出每创建一个命名空间或者添加属性,都需要对对象或属性做附加检查,产生大量重复代码,这违背了DRY原则,也是产生命名空间函数的原因。我们希望通过以下命名空间函数调用产生以上效果:
命名空间(英语:Namespace)表示标识符(identifier)的可见范围。一个标识符可在多个命名空间中定义,它在不同命名空间中的含义是互不相干的。这样,在一个新的命名空间中可定义任何标识符,它们不会与任何已有的标识符发生冲突,因为已有的定义都处于其它命名空间中。
二.命名空间的作用
当一个工程很大时,既有自身的代码,又有引用的外部库,当自身库和外部库中的对象重名时,没有命名空间将无法区分他们。
三.通用命名空间函数
JavaScript语言的语法中,没有内置命名空间,但这种特征非常容易实现。添加到命名空间的属性可能已经存在,所以在添加属性或者创建命名空间之前,我们应该先检查命名空间是否存在。
var FN = FN || {};
如果定义FN.fn1.fn2,则:
var FN = FN || {}; var FN.fn1 = FN.fn1 || {}; var FN.fn1.fn2 = FN.fn1.fn2 || {};
可以看出每创建一个命名空间或者添加属性,都需要对对象或属性做附加检查,产生大量重复代码,这违背了DRY原则,也是产生命名空间函数的原因。我们希望通过以下命名空间函数调用产生以上效果:
var FN = FN || {}; FN.namespace = function(ns_string){ var parts = ns_string.split("."), parent = FN, i; if(parts[0] === "FN"){ left = parts.slice(1); } for(i = 0 ;i < left.length; i += 1){ if(typeof parent[left[i]] === "undefined"){ parent[left[i]] = {}; } parent = parent[left[i]] ; } } x = FN.namespace("FN.fn1.fn2");
相关文章推荐
- <<JavaScript编程全解>>阅读笔记之javascript数据类型
- 一个简单的js求和
- 简单的分页js代码
- 点滴记录ExtJS练习——ComboBox的四种扩展
- 【JSON】Jackson初学,及常用的例子
- js动态删除增加dom元素
- js Table鼠标滑过变色,单击变色,隐藏某列的方法
- (一)页面中引入seajs以及模块的加载和启动
- input简单操作
- js显示当前日期时间和星期几
- <<JavaScript编程全解>>阅读笔记之javascript基础
- Jsp页面生成随机验证码图片
- javascript日期格式化方法汇总
- js检测用户输入密码强度
- JavaScript子窗口调用父窗口变量和函数的方法
- JS事件总结
- 深入学习JavaScript对象
- javascript 构造函数方式定义对象
- 常规功能和模块自定义系统 (cfcmms)—012Extjs6的开发模式和发布模式
- JavaScript 三种创建对象的方法