自调用匿名函数和js的Module模式
编写自调用匿名函数的结构一般如下:
;(function( window, undefined ) {
// your code
})(window);
传入的参数window,和参数列表中的undefined怎么解释?
1、传入的参数window
把全局的Window对象传进去,把全局的变量变成局部变量,避免了函数里面执行时候,不需要将作用域链退到顶层作用域,到外面去寻找window,可以提高效率。假如函数里面用到很对window的对象,这样函数要不停的去外面寻找。
还有一点,在压缩代码的时候,window作为参数可以压缩成一些标识符。
2、参数列表中的undefined
在匿名函数的作用域内,确保undefined是真的未定义。
就算外面undefined被定义了,也不会影响函数内部的。这就最大程度防止外界的变量定义对所做封装的内部造成影响。
3、其他
$(function(){
//your code
})
就是页面加载好之后执行的函数,是$(document).ready(function(){})的简写。
4、Module模式
特点:
1、模块化,可重用
2、封装了变量和function,和全局的命名空间不接触,松耦合
3、只暴露可用public的方法,其它私有方法全部隐藏
// 创建一个立即调用的匿名函数表达式
// return一个对象,对象中你要暴露的东西
// 返回这个变量将赋值给counter var counter = (function(){
var i = 10; return {
get:function(){
return i;
},
set:function(val){
i = val;
},
increment:function(){
return ++i;
}
} }()) console.log(counter.get()); //10
counter.set(100);
console.log(counter.increment()) //101
自调用匿名函数和js的Module模式的更多相关文章
- JS函数 -- 功能,语法,返回值,匿名函数,自调用匿名函数,全局变量与局部变量,arguments的使用
“JavaScript设计得最出色的就是它的函数的实现.” -- <JavaScript语言精粹> 函数包含一组语句,它们是JS的基础模块单元,用于指定对象的行为.一般来说,所谓编程,就是 ...
- JavaScript自调用匿名函数
Self-Invoking Anonymous Function,即自调用匿名函数.顾名思义,该函数没有名称,不同的是,该函数定义后立即被调用.该函数的作用是在应用中初始化或做一次性工作. 普通匿名函 ...
- 《JQuery技术内幕》读书笔记——自调用匿名函数剖析
Javascript语言中的自调用匿名函数格式如下: (function(){ //do somethings })(); 它还有另外两种等价写法如下: //等价写法一 (function(){ // ...
- js的匿名函数和js的onload函数
所谓js匿名函数就是当用户一打开页面时不等到文档加载完就会执行里面的代码,语法如下: (function(){})(); js的onload函数代码如下: <!DOCTYPE html>& ...
- JavaScript基础精华02(函数声明,arguments对象,匿名函数,JS面向对象基础)
函数声明 JavaScript中声明函数的方式:(无需声明返回值类型) function add(i1, i2) { return i1 + i2;//如果不写return返回 ...
- js自调用匿名函数的三种写法
第一种: (function(){ console.log(‘hello world”) })() 第二种: (function(){ console.log(‘hello world’) }()) ...
- jquery自调用匿名函数解析
alert("undefined" in window); (function (window, undefined) { //构造jQuery ...
- 学习javaScript必知必会(1)~js介绍、函数、匿名函数、自调用函数、不定长参数
一.简单了解一下JavaScript(js) 1.什么是js? js:是网景公司开发的,是基于客户端浏览器, 面向(基于)对象.事件驱动式的页面脚本语言. 2.什么场景下使用到js? 表单验证.页面特 ...
- js 中特殊形势的函数-匿名函数的应用
javascript中的匿名函数,那什么叫做匿名函数? 匿名函数就是没有函数名称:演示代码: <script> function(x,y){ return x+y //这个就是一个匿名函数 ...
随机推荐
- WPF 自定义RadioButton样式
一.RadioButton基本样式 RadioButton基本样式包含两种状态,这里也是使用两张图片来代替两种状态,当然你也可以通过IconFont或Path来替换这两种状态. 效果如下: 样式代码如 ...
- 【原创】公司各个阶段 CTO 需要做什么?(上篇)
CTO 是企业内技术最高负责人,对企业的发展起到至关重要的作用.但随着公司的不断发展,CTO 的工作重心也会不断变化.只有在正确的阶段做正确的事,才能更好地为公司做出贡献.我是空中金融 CTO ,TG ...
- api-gateway实践(16)【租户模块:修改api定义】通过mq通知【开发者模块:更新开发者集市】
一.订阅关系 二.接收消息 dev模块接收更新本地集市
- GIT入门笔记(20)- git 开发提交代码过程梳理
git开发提交流程新项目开发,可以直接往master上提交老项目维护,可以在分支上修改提交,多次add和commit之后,也可以用pull合并主干和本地master,解决冲突后再push 1.检出代码 ...
- H5的canvas绘图技术
canvas元素是HTML5中新添加的一个元素,该元素是HTML5中的一个亮点.Canvas元素就像一块画布,通过该元素自带的API结合JavaScript代码可以绘制各种图形和图像以及动画效果. 1 ...
- 类相关的BIF
1.>>> issubclass(C,A)#判断c是A的子类,返回真假 2.>>> isinstance(b1,B) #判断c1是B类的实例化对象,返回真假 3.& ...
- Ubuntu+Firefox总是打不开网页
参考链接 火狐的设置里面找: 首选项 -> 高级 -> 网络 -> 连接 -> 设置, 结果发现之前默认是选择了使用系统代理设置, 果断拒绝!... 勾选第一项, " ...
- java 反射(Reflection)
看了很多关于java 反射的文章,自己把所看到的总结一下.对自己,对他人或多或少有帮助吧. Java Reflection是什么? 首先来看看官方文档Oracle里面对Reflection的描述: R ...
- 2018.4.16Spring.Net入门学习内容
三大方面: IoC:Inversion of Control 控制翻转:就是创建对象的权利由开发人员自己控制New,转到了由容器来控制. DI:Dependency InjectionIt is a ...
- [USACO 12DEC]Running Away From the Barn
Description It's milking time at Farmer John's farm, but the cows have all run away! Farmer John nee ...