JavaScript中This到底指哪个对象?
2016-09-27 08:27
274 查看
先来看这一段代码
请问这里打印出什么?
很显然,会打印出target对象本身。
我们都知道,this 的含义 代表 当前对象,该如何来理解当前二字呢?
任何的话都需要语境,上下文环境,放在不同的地方,含义可能就大不相同。
当有一个人对着你大喊一声:开!
如果你手里有把枪,你会扣动扳机。如果你坐在汽车里,你会踩油门。如果你站在阳台,你可能会打开窗户。如果你在打麻将,对方可能胡牌了。。。。
THIS身为一个关键字,它所指代的是此刻正在运行的函数依附于哪个对象。
再来看这一段代码
然后我们测试一下
从代码当中我们分明可以看出, 二者调用的其实是同一个函数。
可为什么结果不同呢? 因为函数此刻所依附的对象不同了。
就好像同一句话,出自不同人之口,代词指向的目标则会不一样。
A对B说:“老子要杀了你!”
这里的老子指代A,你指代B
B对A说:”老子要弄死你!”
这里的老子指代B,你指代A
最后一个实验:
表面上看,this处于onclick函数当中。那么我们可能会直观的认为,
this指的应该是target。但很显然这个答案错误。
this本质上是处于定时器的匿名函数当中,而这个匿名函数是在全局范围被调用的,相当于如下代码:
因此,这里的this指的是window对象。
注:在严格模式下,this是不允许指向window的,当出现指向window的情况,会报错。
target.onclick = function(){ console.log(this); }
请问这里打印出什么?
很显然,会打印出target对象本身。
我们都知道,this 的含义 代表 当前对象,该如何来理解当前二字呢?
任何的话都需要语境,上下文环境,放在不同的地方,含义可能就大不相同。
当有一个人对着你大喊一声:开!
如果你手里有把枪,你会扣动扳机。如果你坐在汽车里,你会踩油门。如果你站在阳台,你可能会打开窗户。如果你在打麻将,对方可能胡牌了。。。。
THIS身为一个关键字,它所指代的是此刻正在运行的函数依附于哪个对象。
再来看这一段代码
target.onclick = function(){ console.log(this); }obj.test = target.onclick;
然后我们测试一下
target.onclick(); // 结果是 target对象本身 obj.test(); //结果为obj 对象本身
从代码当中我们分明可以看出, 二者调用的其实是同一个函数。
可为什么结果不同呢? 因为函数此刻所依附的对象不同了。
就好像同一句话,出自不同人之口,代词指向的目标则会不一样。
A对B说:“老子要杀了你!”
这里的老子指代A,你指代B
B对A说:”老子要弄死你!”
这里的老子指代B,你指代A
最后一个实验:
target.onclick =function(){ setInterval(function(){ console.log(this); //这里的this是什么? },50); }
表面上看,this处于onclick函数当中。那么我们可能会直观的认为,
this指的应该是target。但很显然这个答案错误。
this本质上是处于定时器的匿名函数当中,而这个匿名函数是在全局范围被调用的,相当于如下代码:
window.匿名函数();
因此,这里的this指的是window对象。
注:在严格模式下,this是不允许指向window的,当出现指向window的情况,会报错。
相关文章推荐
- 判定 this 到底指向哪个对象
- Protetype, this以及var在javascript面象对象设计中的区别和应用
- js的 function, javascript内置对象,this概念及之间的关系不再迷惑。
- 学习笔记---Javascript原型对象、this的5钟用法、原型继承、Caller和Callee的使用
- Javascript中函数调用与this所指对象关系进行了一下总结
- 学习JavaScript 的必备 (一),让您对js的 function, javascript内置对象,this概念及之间的关系不再迷惑
- ?第三讲中孙老师提到的this指针到底指向基类对象还是派生类对象?
- extjs中 this 在某些情况下指的是哪个对象
- 我的JavaScript之旅——this到底是啥?
- 让您对js的 function, javascript内置对象,this概念及之间的关系不再迷惑
- JavaScript call apply使用——JavaScript对象的方法绑定到DOM事件后this指向问题
- javascript运行时错误:this.ds为空或不是对象
- javascript中的this到底指什么?
- 对js的 function.javascript内置对象,this概念及之间的关系不再迷惑
- 我的JavaScript之旅——this到底是啥?
- 学习JavaScript 的必备 (一),让您对js的 function, javascript内置对象,this概念及之间的关系不再迷惑。(希望能置为推荐篇,为更多的js初学者关注)
- javascript中不同方式的嵌套函数中 this指针指向的对象的不同(高手就不用进了,因为我也是菜鸟)
- [JAVASCRIPT] this 对象
- Javascript 作用域链 活动对象 执行环境 与 this 的纠结 总结~
- JavaScript call apply使用 JavaScript对象的方法绑定到DOM事件后this指向问题