关于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 ...
随机推荐
- nohup 后台启动程序,并输出到指定日志
1.启动程序并输入到指定日志 nohup python manage.py runserver 0.0.0.0:9090 > /data/zyj/xadstat/xadstat.log 2&am ...
- 这到底是什么bug?---已结贴
问题描述:全局变量,会被莫名其妙更改!打印为50,后面做比较的时候这个值为0了. 第一,我肯定没有犯低级错误,没有其他的更改,搜索全部代码,没有发现这个变量因为我程序问题导致不符合预期,同时找了两位同 ...
- logrotate 日志轮询(转存)
1.建立/etc/logrotate.d/nginx文件[1] vim /etc/logrotate.d/nginx 2.写入如下内容: /var/log/nginx/*log { daily rot ...
- C#学习笔记(3)——操作sqlserver数据库增删改查
说明(2017-5-25 16:29:35): 1. VS2010,视图->服务器资源管理器->数据连接->右键添加连接->服务器名(本机可以用点)->选择数据库-> ...
- 从Unauthorized 401错误学习Spring Boot的Actuator
之前用Spring Boot都是别人搭好的框架,然后自己在里面写就行了.对原理.细节上都怎么涉及,毕竟需求都做不完.但是昨天一个访问RESTful接口的401问题搞了我2个小时.网上找的很多用: ma ...
- [uboot]uboot中显示logo
http://blog.chinaunix.net/uid-20543672-id-3246292.html
- 头文件中ifndef/define/endif的作用以及#pragma once使用
例如:要编写头文件test.h 在头文件开头写上两行: #ifndef _TEST_H #define _TEST_H//一般是文件名的大写 ············ ············ 头文件 ...
- PostgreSQL LIKE 查询效率提升实验<转>
一.未做索引的查询效率 作为对比,先对未索引的查询做测试 EXPLAIN ANALYZE select * from gallery_map where author = '曹志耘'; QUERY P ...
- andorid——自定义seekbar(转)
xml 新建=>xml=>values <?xml version="1.0" encoding="utf-8"?> <resou ...
- DLL入门
DllTest工程 QMath.h #pragma once #ifdef API_EXPORT #define DLL_CLASS __declspec(dllexport) #define DLL ...