关于js中namespace命名空间模式
命名空间有助于减少程序中所需要的全局变量的数量,并且同时有助于避免命名冲突或过长的名字前缀。
关于命名空间的例子:
/**
* 创建全局对象MYAPP
* @module MYAPP
* @title MYAPP Global
*/
var MYAPP = MYAPP || {}; /**
* 返回指定的命名空间,如果命名空间不存在则创建命名空间。
* 备注:命名时需小心,注意保留关键字,可能在一些浏览器无法使用。
*
* @method namespace
* @param {String *} 至少需要创建一个命名空间
* @return {Object} 最后一个命名空间创建的对象的引用
*/
MYAPP.namespace = function(str){
var parts = str.split("."),
parent = MYAPP,
i=0,
l=0; if(parts[0]==="MYAPP"){
parts = parts.slice(1);
}
for(i=0,l=parts.length; i<l;i++){
if(typeof parent[parts[i]] === "undefined"){
parent[parts[i]] = {};
}
parent = parent[parts[i]];
}
return parent;
} /**
* bfun是Basic Functions Extended的缩写
* 作用:包括数组、字符串等等数功能扩展
*
* @module bfun
*/
MYAPP.bfun = {
array:(function(){
return {
/**
* @method isArray 判断是否为数组
* @param {Array} 数组
* @return {Boolean} 真返回true,否则返回false
*/
isArray: function(){
return Object.prototype.toString.call(arguments[0]) === '[object Array]';
},
/**
* @method inArray 检查值是否在数组中
* @param {value,Array} 值,数组
* @return {Boolean} 真返回true,否则返回undefined
*/
inArray: function(val,arr){
for(var i=0,l=arr.length;i<l;i++){
if(arr[i] === val){
return true;
}
}
}
}
})(),
string:(function(){
return {
/**
* @method trim 过滤字符串两边多余的空格
* @param {String} 字符串
* @return {String} 字符串
*/
trim: function(){
return arguments[0].replace(/(^\s*)|(\s*$)/g, "");
},
/**
* @method ltrim 过滤字符串左边多余的空格
* @param {String} 字符串
* @return {String} 字符串
*/
ltrim: function(){
return arguments[0].replace(/^s+/g, "");
},
/**
* @method rtrim 过滤字符串右边多余的空格
* @param {String} 字符串
* @return {String} 字符串
*/
rtrim: function(){
return arguments[0].replace(/s+$/g, "");
}
}
})()
} // 测试
MYAPP.test = {
init: function(){
// 使用对应的模块先引用
var marray = MYAPP.namespace("MYAPP.bfun.array");
var mstring = MYAPP.namespace("MYAPP.bfun.string"); var arr = ["a","b"];
var str = " abc "; console.log("判断是否为数组:" + marray.isArray(arr));
console.log("值是否在数组中:" + marray.inArray("a",arr));
console.log("过滤左右空格:" + mstring.trim(str));
}
} MYAPP.test.init();
关于js中namespace命名空间模式的更多相关文章
- js中创建命名空间的几种写法
在JavaScript中全局变量经常会引起命名冲突,甚至有时侯重写变量也不是按照你想像中的顺序来的,可以看看下面的例子: var sayHello = function() { return 'Hel ...
- 在js中创建命名空间的几种写法
在JavaScript中全局变量经常会引起命名冲突,甚至有时侯重写变量也不是按照你想像中的顺序来的,可以看看下面的例子: var sayHello = function() { return 'H ...
- js中的命名空间
尽量不要使用全局变量,防止环境污染和命名冲突. 所以,将全局变量放在一个命名空间下,是一个好的解决方案. 静态命名空间 1. 直接赋值 这是最基本的方法,但是它很啰嗦,你得重复书写多次变量名.好处是它 ...
- JS中的工厂模式
.一个栗子: var BicycleShop = function(){}; BicycleShop.prototype = { sellBicycle : function( model ){ va ...
- js中的严格模式和非严格模式的比较
前言 es5的严格模式是采用具有限制性JavaScript变体的一种方式,从而使代码显示地脱离'懒散模式/非严格模式' 严格模式 严格模式通过抛出错误来消除一些原有静默错误 严格模式修复了一些导致Ja ...
- js中的组合模式
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- JavaScript中创建命名空间
引用:http://ourjs.com/detail/538d8d024929582e6200000c 在JavaScript中全局变量经常会引起命名冲突,甚至有时侯重写变量也不是按照你想像中的顺 ...
- 在JavaScript中创建命名空间的几种写法
在JavaScript中全局变量经常会引起命名冲突,甚至有时侯重写变量也不是按照你想像中的顺序来的,可以看看下面的例子: var sayHello = function() { return 'Hel ...
- JS命名空间模式解析
简介 在SF上看到这样一个提问: 如题,因为不得已的原因,需要写若干个全局函数.但又不想这样: window.a = function(){} window.b = function(){} wind ...
随机推荐
- SQLite 入门教程一 基本控制台(终端)命令
一.基本简介 SQLite 是一个自持的(self-contained).无服务器的.零配置的.事务型的关系型数据库引擎.因为他很小,所以也可以作为嵌入式数据库内建在你的应用程序中.SQLite 被应 ...
- vs2015利用python加载dll调试配置
python调用dll相对而言比较方便,写个脚本调试轻松工作,快乐生活. python脚本 from ctypes import * import time # 脚本挂起 input() # load ...
- django 错误之 ImportError: No module named **
今天测试django的时候出了点问题,被坑惨了. D:\pythonCode\django\mysite>django-admin.py startproject mysite 然后创建APP ...
- JAVA-JSP内置对象之移除属性
相关资料:<21天学通Java Web开发> 移除属性1.只需调用相应对象的removeAttribute()方法就可以移除指定属性 RemoveAttributeDemo.jsp < ...
- 基于jQuery图片弹出翻转特效代码
分享一款基于jQuery图片弹出翻转特效代码.这是一款基于jQuery+HTML5实现的,里面包含六款不同效果的鼠标点击图片弹出特效下载.效果图如下: 在线预览 源码下载 实现的代码. html代 ...
- 自定义kafka Sink
package my.bigdata; /** * Created by lq on 2017/8/22. */ import java.io.File; import java.io.FileInp ...
- Mockito 简单使用
有一个月没写博客了,以后再忙也要抽时间写啊. 目的 正常情况下,如果要对 UserService 中方法的测试,那么其依赖的 UserDao 也要可以调通,但是,UserDao 可能并不是直接到 DB ...
- am335x u-boot2011.09 SPL 流程跟踪
跟踪一下 u-boot 2011.09 MLO在 nandflash 下运行的流程 首先,直接进入 start.S // arch/arm/cpu/armv7/start.S 36 .globl _s ...
- setfacl命令
setfacl命令是用来在命令行里设置ACL(访问控制列表).在命令行里,一系列的命令跟随以一系列的文件名. 选项 -b,--remove-all:删除所有扩展的acl规则,基本的acl规则(所有者, ...
- [转]Nginx的负载均衡方式
如果Nginx没有仅仅只能代理一台服务器的话,那它也不可能像今天这么火,Nginx可以配置代理多台服务器,当一台服务器宕机之后,仍能保持系统可用.具体配置过程如下: 1. 在http节点下,添加ups ...