javascript 之 命名空间
注意点:
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 之 命名空间的更多相关文章
- JavaScript 实现命名空间(namespace)的最佳方案——兼容主流的定义类(class)的方法,兼容所有浏览器,支持用JSDuck生成文档
作者: zyl910 一.缘由 在很多的面向对象编程语言中,我们可以使用命名空间(namespace)来组织代码,避免全局变量污染.命名冲突.遗憾的是,JavaScript中并不提供对命名空间的原生支 ...
- JavaScript之命名空间模式 浅析
来源于:http://www.cnblogs.com/syfwhu/p/4885628.html 前言 命名空间可以被认为是唯一标识符下代码的逻辑分组.为什么会出现命名空间这一概念呢?因为可用的单词数 ...
- JavaScript创建命名空间、类及类成员
JavaScript代码: //为String对象增加方法isNullOrEmpty String.isNullOrEmpty = function (a) { if (a != null & ...
- JavaScript 全局变量命名空间生成函数
<script type="text/javascript"> var GLOBAL = {}; GLOBAL.namespace = function(str){ v ...
- JavaScript之命名空间模式
前言 命名空间可以被认为是唯一标识符下代码的逻辑分组.为什么会出现命名空间这一概念呢?因为可用的单词数太少,并且不同的人写的程序不可能所有的变量都没有重名现象.在JavaScript中,命名空间可以帮 ...
- 【JavaScript】 命名空间污染解决
闭包解决命名空间污染问题 var init = (function () { var name = "zhangsan", age = 12, sex = "male&q ...
- javascript之命名空间方法封装
详细代码如下: Object.prototype.namespace= function(name){ var parts = name.split('.'); var current = this; ...
- Javascript 相关文章 —— 性能
在 IBM Bluemix 云平台上开发并部署您的下一个应用. 开始您的试用 概览 无论当前 JavaScript 代码是内嵌还是在外链文件中,页面的下载和渲染都必须停下来等待脚本执行完成.JavaS ...
- JavaScript 的性能优化:加载和执行
随着 Web2.0 技术的不断推广,越来越多的应用使用 javascript 技术在客户端进行处理,从而使 JavaScript 在浏览器中的性能成为开发者所面临的最重要的可用性问题.而这个问题又因 ...
随机推荐
- Flutter -------- Drawer侧滑
侧滑菜单在安卓App里面非常常见 抽屉通常与Scaffold.drawer属性一起使用.抽屉的子项通常是ListView,其第一个子项是DrawerHeader ,它显示有关当前用户的状态信息.其余的 ...
- 搭建 Kafka 集群 (v2.12-2.3.0)
服务器:10.20.32.121,10.20.32.122,10.20.32.123 三台服务器都需要安装jdk.配置zookeeper.配置kafka 1.安装配置jdk1.8 [root@loca ...
- (转)darknet 训练心得
1. 安装darknet 使用Git克隆源码 git clone https://github.com/pjreddie/darknet 我们可能需要修改Makefile,主要修改前三行,配置使用GP ...
- for(auto i : v)遍历容器元素
c++11的新特性,v是一个可遍历的容器或流,比如vector类型,i就用来在遍历过程中获得容器里的每一个元素. for(auto i:v) for(auto &i:v) 代码1:#inclu ...
- Microsoft OA
Given a string S consisting of N lowercase letters, return the minimum number of letters that must b ...
- ISO/IEC 9899:2011 条款6.7.2——类型说明符
6.7.2 类型说明符 语法 1.type-specifier: void char short int long float double signed unsigned _Bool _Comple ...
- Python中产生随机数
Python中产生随机数 一.Python自带的random库 1.参生n--m范围内的一个随机数: random.randint(n,m) 2.产生0到1之间的浮点数: rand ...
- ubuntu挂载新硬盘
root@luo-All-Series:~# fdisk -lDisk /dev/loop0: 320.2 MiB, 335728640 bytes, 655720 sectorsUnits: sec ...
- 全面系统Python3入门+进阶-1-8 Python的前景
语言的热度. python在开发效率上有优势 大数据.人工智能 结束
- 123457123457#0#-----com.tym.YuErBaiKeTYM--前拼后广--育儿百科
com.tym.YuErBaiKeTYM--前拼后广--育儿百科