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

  1. 1、本文档共3页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
javascript创建命名空间的5种写法

javascript创建命名空间的5种写法 在javascript中全局变量经常会引起命名冲突,甚至有时侯重写变量也不是按照你想像中的顺序来的,可以看看下面的例子: 代码如下: var sayhello = function() { return hello var; }; function sayhello(name) { return hello function; }; sayhello(); 最终的输出为 代码如下: hello var 为什么会这样,根据 stackoverflow 的解释,实际上javascript的是按如下顺序解析的。 代码如下: function sayhello(name) { return hello function; }; var sayhello = function() { return hello var; }; sayhello(); 不带var的function声明被提前解析了,因此现代的js写法建议你始终使用前置var声明所有变量; 避免全局变量名冲突的最好办法还是创建命名空间,下面是在js中合建命名空间的几种常用方法。 一、通过函数(function)创建 这是一种比较常见的写法,通过声明一个function实现,函数里设置初始变量,公共方法写入prototype,如: 代码如下: var namespace = namespace || {}; /* function */ 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 代码如下: /* 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 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(); 这里可以最后再返回所有公有接口(方法/变量)的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()

文档评论(0)

baoyue + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档