javascript闭包,作用域,自调用匿名函数
来源:互联网 发布:企业信息搜索软件 编辑:程序博客网 时间:2024/05/21 17:32
一,自调用匿名函数
有两种方式:
第一种: (function(参数){....}(传入参数)) --->括号内的语句被强制执行
第二种: (function(参数){...})(传入参数) --->说明:jquery就是采用这种方式,这种方式的原理: 原来我们调用函数的方式是,先定义,在进行函数名调用
function funName(){alert("hello world");
}
funName(); //调用
其原理是通过函数名(引用)去找实际的函数定义, 那么我们这种自调用就很好理解了,是一定义函数就使用,而不是通过函数名去找定义
即如果 你使用 (function(参数){...})的形式, 则相当于你定义了一个函数并执行了定义, 之后使用(参数),即是再进行自调用,即类似 函数名(参数) ,只不过这里没有函数名,而是变成函数定义实体,直接传入参数即可
自调用匿名函数作用: 使内部变量不会与外部用户自定义的全局变量产生冲突,例如一个函数重名问题:如果不是自调用的函数,那么必须有函数名,并且暴露给外部用户调用,那么就有可能产生函数重名问题:用户的自定义了一个相同的函数名称
二,作用域:
对象变量
2.对象前没有this:私有变量或者全局变量,,无法直接访问
1).私有变量:在对象内以var定义的变量, 如: var varName='xxxx', 不能直接访问, 需要setter和getter函数访问
2). 全局变量: 在对象外部的变量 或者 在函数内部直接使用变量名的形式,即没有var或this的形式, 例如 varName="这是全局变量", 这样子就定义了一个全局变量
全局变量不能以 对象.变量的形式访问, 但是可以直接以 变量名的形式访问, 例如在程序中要访问可以: alert(varName);即输出"这是全局变量"
成员函数1. 函数前加this: 即 this.functionName的形式:公共函数,可以直接访问,setter和getter方法即用这样定义
2.对象前没加this: 即function functionName(){}的形式,私有函数,只能在对象内部使用
成员函数如何访问对象变量:
1,对象公共变量: 本身不用返回外部也可取到, 如果要访问,使用this.varName(因为在对象中就是这样定义的)
2.全局变量: 直接使用返回 varName的形式(因为本身就可以在任何地方使用 varName的形式)
3.私有变量: 也是返回 varName的形式,不能使用this,this代表当前函数
三,闭包:
function Person(){
var i = 1;
function functionName(){
alert(++i);
}
return functionName;
}
var result = Person();
result();//得到2
result(); //得到3
说明:闭包:functionName称为闭包,网上通俗解释为 函数中的函数
我更愿意理解为 对象中的函数,在作用域里讲过, 通过function functionName(){}的方式定义的是私有成员函数,只能给对象内部使用;
要是愿意,完全可以将 return functionNname 的functionName 替换为原 functionName函数的定义,效果一样
而在调用端, var result=Person(); 实例化对象(可以使用new Person()),result() 是调用对象,而实例化的对象只有一个,当然每调用一次i值就会增加
如果,实例化两个对象,那么其实两个对象的i值是不会互相影响的
四,js原型,prototype<略>
掌握了上述的四个知识之后,就可以尝试去看看JQuery库的源码了,jquery通过自调用将jQuery【$】赋给window.jQuery,并在这个对象定义了很多成员和扩展,因此我们客户端才可以直接通过 [window.]jQuery或$的方式使用JQuery库和其里面的方法
0 0
- javascript闭包,作用域,自调用匿名函数
- 闭包 函数 匿名函数 自调用匿名函数 解析
- javascript函数作用域、闭包以及匿名函数2
- JavaScript作用域、上下文环境、函数对象的定义与调用、匿名函数的定义与调用、闭包
- javascript变量作用域、匿名函数及闭包
- javascript变量作用域、匿名函数及闭包
- javascript变量作用域、匿名函数及闭包
- javascript变量作用域、匿名函数及闭包
- JavaScript自调用匿名函数
- javascript 自调用匿名函数
- JavaScript 自调用匿名函数
- JavaScript闭包-匿名函数和函数的作用域链
- javascript两种自调用匿名函数
- Javascript自调用匿名函数的写法
- 闭包 匿名函数的调用 链式作用域 预解析机制
- JavaScript this的作用域、匿名函数、闭包 的理解
- 自调用匿名函数
- 自调用匿名函数
- C3P0的配置方式
- nyoj-111-分数加减法
- HBase 官方文档
- 《读书笔记》设计模式——开放-封闭原则
- C++ 进程间的通讯(一):简单的有名管道实现
- javascript闭包,作用域,自调用匿名函数
- Linux:访问光盘的命令
- Hbase入门之三HBase Client API使用入门1
- 关于linux系统端口查看和占用的解决方案
- Asp.net utf-8 编码中文乱码完全解决方案
- HBase入门之四HBase JAVA WEB客户端
- Bbase入门之五hbase实现web 小实例
- Android获取控件在手机屏幕上的位置
- Hbase入门之六JAVA链接hbase