收藏 分享(赏)

javascript创建命名空间的5种写法.doc

上传人:kuailexingkong 文档编号:1181688 上传时间:2018-06-17 格式:DOC 页数:3 大小:19.50KB
下载 相关 举报
javascript创建命名空间的5种写法.doc_第1页
第1页 / 共3页
javascript创建命名空间的5种写法.doc_第2页
第2页 / 共3页
javascript创建命名空间的5种写法.doc_第3页
第3页 / 共3页
亲,该文档总共3页,全部预览完了,如果喜欢就下载吧!
资源描述

1、 javascript 创建命名空间的 5 种写法在 javascript 中全局变量经常会引起命名冲突,甚至有时侯重写变量也不是按照你想像中的顺序来的,可以看看下面的例子:代码如下:var sayhello = function() return hello var;function sayhello(name) return hello function;sayhello();最终的输出为代码如下:hello var为什么会这样,根据 stackoverflow 的解释,实际上 javascript 的是按如下顺序解析的。代码如下:function sayhello(name) retur

2、n hello function;var sayhello = function() return hello var;sayhello();不带 var 的 function 声明被提前解析了,因此现代的 js 写法建议你始终使用前置 var 声明所有变量;避免全局变量名冲突的最好办法还是创建命名空间,下面是在 js 中合建命名空间的几种常用方法。一、通过函数(function) 创建这是一种比较常见的写法,通过声明一个 function 实现,函数里设置初始变量,公共方法写入 prototype,如:代码如下:var namespace = namespace | ;/*function*

3、/namespace.hello = function() this.name = world;namespace.hello.prototype.sayhello = function(_name) return hello + (_name | this.name);var hello = new namespace.hello();hello.sayhello();这种写法比较冗长,不利于压缩代码(jquery 使用 fn 代替 prototype) ,而且调用前需要先实例化(new)。使用 object 写成 json 形式可以写得紧凑些:二、通过 json 对象创建 object代码

4、如下:/*object*/var namespace = namespace | ;namespace.hello = name: world, sayhello: function(_name) return hello + (_name | this.name);调用代码如下:namespace.hello.sayhello(js);hello js;这种写法比较紧凑,缺点是所有变量都必须声明为公有(public)的,导致所有对这些变量的引用都需要加 this 指示作用域,写法也略有冗余。三、通过闭包(closure)和 object 实现在闭包中声明好所有变量和方法,并通过一个 json

5、 object 返回公有接口:代码如下:var namespace = namespace | ;namespace.hello = (function() /待返回的公有对象var self = ;/私有变量或方法var name = world;/公有方法或变量self.sayhello = function(_name) return hello + (_name | name);/返回的公有对象return self;();四、object 和闭包的改进型写法上个例子在内部对公有方法的调用也需要添加 self,如:self.sayhello() ; 这里可以最后再返回所有公有接口(方法

6、/变量)的 json 对象。代码如下:var namespace = namespace | ;namespace.hello = (function() var name = world;var sayhello = function(_name) return hello + (_name | name);return sayhello: sayhello;();五、function 的简洁写法这是一种比较简洁的实现,结构紧凑,通过 function 实例,且调用时无需实例化( new) ,方案来自 stackoverflow:代码如下:var namespace = namespace | ;namespace.hello = new function() var self = this;var name = world;self.sayhello = function(_name) return hello + (_name | name);欢迎补充。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 经营企划

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报