关于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();
转载于:https://www.cnblogs.com/kuikui/p/3190381.html
关于js中namespace命名空间模式相关推荐
- JS中的严格模式(Strict Mode)
什么是严格模式? 严格模式是ECMAScript5的新特性,它是采用具有限制性JavaScript变体的一种方式,从而使代码隐式地脱离"马虎模式/稀松模式/懒散模式"(sloppy ...
- JS中使用工厂模式创建对象
<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8" ...
- js中的设计模式之组合模式
Js中的组合模式 定义 是一种将对象组合成树状结构的层次结构模式,用来表示 整体-部分 的关系,使用用户对单个对象和组合对象具有一致的访问性. 详细描述 组合模式是一个树形结构,里面的数据可以是单个对 ...
- 在JavaScript中创建命名空间的几种写法
在JavaScript中全局变量经常会引起命名冲突,甚至有时侯重写变量也不是按照你想像中的顺序来的,可以看看下面的例子: var sayHello = function() {return 'Hell ...
- JS中的THIS处理及正则表达式 — 1、callapplyjson
1.大纲 面向对象深入了解 函数的三种角色:函数也是对象 Function Function.prototype:call/apply/bind 面试题讲解 ... call && a ...
- C++中的命名空间namespace
1.Cpp中的命名空间 假设这样一种情况,当一个班上有两个名叫Zara的学生时,为了明确区分它们,我们在使用名字之外,不得不使用一些额外的信息,比如他们的家庭住址,或者他们父母的名字等等.同样的情况, ...
- js架构设计模式——由项目浅谈JS中MVVM模式
1. 背景 最近项目原因使用了durandal.js和knockout.js,颇有受益.决定写一个比较浅显的总结. 之前一直在用SpringMVC框架写后台,前台是用JSP+JS+标签库,算是很 ...
- 由项目浅谈JS中MVVM模式
文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/. 1. 背景 最近项目原因使用了durandal.js和knock ...
- js中的4种函数调用模式:函数调用、方法调用、构造器调用、间接调用
全栈工程师开发手册 (作者:栾鹏) js系列教程4-函数.函数参数教程全解 js中的4种函数调用模式 javascript一共有4种调用模式:函数调用模式.方法调用模式.构造器调用模式和间接调用模式. ...
最新文章
- 传输层协议(TCP/UDP)介绍
- 颜色排序(Sort Colors)
- Linux 中yum的配置
- tortoisegit推送ssh-key需要输入用户信息
- JavaFX UI控件教程(三)之Label
- 数据中台是下一代大数据_全栈数据科学:下一代数据科学家群体
- php print r用法,php中echo(),print(),print_r()用法
- 配对(套利)交易之二,符合配对规则回测
- quartus仿真28:JK触发器实现的脉冲分配器(分析)
- oracle rac的特征
- HINSTANCE HANDLE HWND 的区别及一般方法
- 中英AlphaGo论文:精通围棋博弈的深层神经网络和树搜索算法(附PDF公号发“AlphaGo论文”下载论文双语对照版)
- TFT液晶屏、LCD显示屏40pin接口标准
- AJA电源维修DCX750sairem射频发生器维修
- Pytorch——报错解决:RuntimeError: Output 0 of SelectBackward is a view and is being modified inplace.
- 整理的apollo 入门课程
- 使用Kali上的Metasploit获取ssh登录到靶机权限
- 如何利用微信进行微信签到呢?
- 【计算机网络】利用WireShark分析TCP/UDP协议
- 某数4代cookie生成-2
热门文章
- win10 mysql 3534_win10 mysql 5.7.13 服务无法启动 3534
- infinity mysql_MySql锁机制
- express与mysql数据库_express无法连接到mysql数据库
- 不会这些基础命令,白做运维了
- 【收藏备用】服务器基本故障及排查方法
- 应用系统瓶颈排查和分析的思考-Arthas 实战
- Kubernetes 入门必备云原生发展简史
- linux 中断程序设计,Linux中断编程
- 清理计算机英语是什么,如何清理电脑(国外英文资料).doc
- pls-00302: 必须声明 组件_vue学习手册-单文件组件使用