JS学习之this关键字
来源:互联网 发布:mfc qt 混合编程 编辑:程序博客网 时间:2024/06/05 18:32
his关键字跟在哪定义没关系,跟在哪执行也没关,this的查找只遵循以下三点
1)自执行函数中的this永远是window
2)给元素的事件绑定方法,当触发事件执行对应方法的时候,方法中的this是当前元素
3)不管函数在哪里面执行,我们就看函数名之前是否有“·”,有的话,前面是谁就是谁,没有就是window
// var obj={fn1:fn};// obj.fn1();//前面有.即为.前的obj// 函数在定义的时候 ,this指的是谁 是不知道的// 变量属于哪个作用域,由他在哪儿(作用域)定义有关系//自运行的函数都是在window下运行的this就是window
var number = 2; var obj = { number: 4, fn1: (function () { //自执行时,先声明了一个函数和一个number this.number *= 2;//执行时this.number是全局变量number,即window.number=4 number = number * 2;//这个number为undefined,是这个自执行函数作用域内的number var number = 3;//这个作用域内的number被从新定义为数字3 return function () { //返回给fn1 this.number *= 2;//在没执行之前,这个this无法确定 number *= 3;//这个number即为自执行函数内定义的number并不是全局变量 alert(number) //弹出的number也是自执行函数内定义的number } })(), db2: function () { this.number *= 2 } }; var fn1 = obj.fn1; alert(number);//弹出的为全局变量number 为4 fn1();//这里面的this即为window 弹出9 obj.fn1();//这里面的this即为obj 弹出27 alert(window.number);//弹出8 alert(obj.number);//弹出8
对上面的代码进行分析,运行之前,先预解释了一个number和一个obj,
当执行当自执行函数那里 时,obj中的fn1属性,对应的属性值是那个自执行函数的返回函数,由于,返回函数被占用了,所以这个自执行这次,产生的作用域不会被释放掉。
又由于自运行的函数只要没有·都是在window下运行的this就是window,故其执行时分析如上注释
0 0
- JS学习之this关键字
- JS学习之this关键字
- JS学习—this关键字
- C#学习之this关键字
- java学习之this关键字
- Java学习之关键字this的学习
- Java学习之private和this关键字
- Java学习之封装与this关键字
- java学习笔记之this关键字
- java学习初探5之this关键字
- js学习总结之this
- js学习笔记之this
- js中的this关键字
- JS的this关键字
- JS This关键字
- JS的this关键字
- js的this关键字
- js this关键字
- hdu 5375 Gray code 2015多校联合训练赛#7
- 监控与性能分析系列:1)strace和ltrace跟踪对比同一个socket应用程序
- 机房收费系统(一)可行性研究报告
- hadoop学习笔记 YARN
- hdoj 2412 Party at Hali-Bula 【树形dp】
- JS学习之this关键字
- 线性表的链式存储结构(三)
- 看到一句话, 希望自己记住
- Oracle11g数据泵导入导出
- DLX算法求解精确覆盖问题
- FZU Problem 1853 Number Deletion
- C#网络编程(同步传输字符串) - part.2
- 集合2--Set集合及Collections工具类
- hdu 1075 What Are You Talking About (字典树·文字翻译)