注意点:

1/IIFE是现代js框架最主要的基础设施,保证变量不被污染。

2/基本上我们把命名空间等同于框架的名字。

内容

一、简单的命名空间

<input type="button" value="test" onclick="(new namespace()).alert();"/>

        <script type="text/javascript">
function namespace(){
this.alert=function(){
console.log('test');
}
}
</script>
说明:再这里可以看到,namespace方法存在一个函数对象属性,调用时还需要先实例化namespace再调用其自身的alert方法,似乎存在写法略显复杂
测验结果:在这里我曾理解为 onclick 调用mm()方法 function mm(){ namespace().alert(); } 这样写会报错的 ,而且namespace()句话就报错,不存在
分析看到这段代码中存在this对象,让我想起了一篇文章什么情况下使用this,其中需要理解一下,什么是构造函数,需要用到关键字 new,所以这的namespance应该写成Namespance

二、简单的命名空间的进化

<input type="button" value="test" onclick="NS.alert();"/>

        <script type="text/javascript">
(function namespace(){
this.alert=function(){
console.log('test');
} window.NS=this;
})();
</script>
说明:在这里可以看到 使用了window.NS全局变量,同时使用了IIFE,使得调用变得简便一些

三、简单的命名空间的再次美化

(function (){
this.alert=function(){
console.log('test');
} window.NS=this;
})();
在这里使用了匿名函数,namespance是可以拿掉的 (function(){
var _NS=function(){ }
_NS.prototype.alert=function(){
console.log('test');
}
window.NS=new _NS();
})();
在写看扩展方法的时候,可以写在prototype里面

  

javascript 之 命名空间的更多相关文章

  1. JavaScript 实现命名空间(namespace)的最佳方案——兼容主流的定义类(class)的方法,兼容所有浏览器,支持用JSDuck生成文档

    作者: zyl910 一.缘由 在很多的面向对象编程语言中,我们可以使用命名空间(namespace)来组织代码,避免全局变量污染.命名冲突.遗憾的是,JavaScript中并不提供对命名空间的原生支 ...

  2. JavaScript之命名空间模式 浅析

    来源于:http://www.cnblogs.com/syfwhu/p/4885628.html 前言 命名空间可以被认为是唯一标识符下代码的逻辑分组.为什么会出现命名空间这一概念呢?因为可用的单词数 ...

  3. JavaScript创建命名空间、类及类成员

    JavaScript代码: //为String对象增加方法isNullOrEmpty String.isNullOrEmpty = function (a) { if (a != null & ...

  4. JavaScript 全局变量命名空间生成函数

    <script type="text/javascript"> var GLOBAL = {}; GLOBAL.namespace = function(str){ v ...

  5. JavaScript之命名空间模式

    前言 命名空间可以被认为是唯一标识符下代码的逻辑分组.为什么会出现命名空间这一概念呢?因为可用的单词数太少,并且不同的人写的程序不可能所有的变量都没有重名现象.在JavaScript中,命名空间可以帮 ...

  6. 【JavaScript】 命名空间污染解决

    闭包解决命名空间污染问题 var init = (function () { var name = "zhangsan", age = 12, sex = "male&q ...

  7. javascript之命名空间方法封装

    详细代码如下: Object.prototype.namespace= function(name){ var parts = name.split('.'); var current = this; ...

  8. Javascript 相关文章 —— 性能

    在 IBM Bluemix 云平台上开发并部署您的下一个应用. 开始您的试用 概览 无论当前 JavaScript 代码是内嵌还是在外链文件中,页面的下载和渲染都必须停下来等待脚本执行完成.JavaS ...

  9. JavaScript 的性能优化:加载和执行

    随着 Web2.0 技术的不断推广,越来越多的应用使用 javascript 技术在客户端进行处理,从而使 JavaScript 在浏览器中的性能成为开发者所面临的最重要的可用性问题.而这个问题又因 ...

随机推荐

  1. MiniUI treeGrid 树节点展开和不展开的性能差别很大

    参考API: http://miniui.com/docs/api/index.html#ui=datagrid http://miniui.com/docs/api/index.html#ui=tr ...

  2. Tosca:键盘输入字符串

    这是方法之一

  3. linux内核的0号进程是在哪里创建的?

    1. 0号进程即为idle进程或swapper进程,也就是空闲进程 2. 0号进程特点 idle是一个进程,其pid为0. 主处理器上的idle由原始进程(pid=0)演变而来.从处理器上的idle由 ...

  4. [原][bigemap][globalmapper]通过bigemap下载全球30米DEM高程数据(手动下载)(下载全球高精度dom卫片、影像、等高线、矢量路网、POI、行政边界)

    本文研究了bigemap下载高程数据的方式,但是严重不推荐使用这总手动方式,bigemap这个软件一次只能下载100M以内的高程数据,即使花钱,也不给你提供批量下载dem的方式!也有些其他更好的软件, ...

  5. IDEA分配内存无效

    idea改启动内存分配, 改 C:/Users/xxx/.IntelliJIdea2018.1/confing/idea64.exe.vmoptions 或 C:/Users/xxx/.Intelli ...

  6. Spring cloud微服务安全实战-4-6搭建OAuth2资源服务器

    认证服务器已经搭建好了. 可以通过认证服务器拿到令牌 下面改造订单服务,让它可以用这个令牌. 争对订单服务要做三个事, 1.让订单服务知道它自己是Oauth协议里面的资源服务器.,它知道这个事后,它才 ...

  7. Fastjson 序列化与反序列化

    JSON这个类是fastjson API的入口,主要的功能都通过这个类提供. 序列化API // 将Java对象序列化为JSON字符串,支持各种各种Java基本类型和JavaBean public s ...

  8. linq list select用法注意事项

    下面是我自己做的一个例子 List<CR_CustomerOrder> OrdList = new List<CR_CustomerOrder>(); var b = OrdL ...

  9. C# 邮件发送遇到的错误

    记录写邮件发送功能遇到的一些错误 1.System.Net.Mail.SmtpException:“Transaction failed. The server response was: DT:SP ...

  10. git的使用学习(二)git的操作使用

    1.创建版本库 什么是版本库呢?版本库又名仓库,英文名repository,你可以简单理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改.删除,Git都能跟踪,以便任何时刻都 ...