神奇的this
来源:互联网 发布:自我管理那个软件好 编辑:程序博客网 时间:2024/05/29 17:18
有一点很重要,this是个变色龙,它指向谁是不定的,也不是在函数定义的时候确定的
栗子1:
<pre name="code" class="html">function a(){ var user = "追梦子"; console.log(this.user); //undefined console.log(this); //Window}a();window.a();
栗子中的函数a 是window的一个属性,alert也是,this是指向调用它的对象的,函数a被window调用,故第二个输出为Window,而Window中没有user这个属性,故为undefined.
栗子2:
var o = { a:10, b:{ a:12, fn:function(){ console.log(this.a); //12 } }}o.b.fn();
还有个中重要的情况:this指向的是执行它的主体,而不是赋值的主体。
var o = { a:10, b:{ a:12, fn:function(){ console.log(this.a); //undefined console.log(this); //window } }}var j = o.b.fn;j();如果一个函数中有this,这个函数中包含多个对象,尽管这个函数是被最外层的对象所调用,this指向的也只是它上一级的对象
在构造函数中,如果返回值是一个对象,那么this指向的就是那个返回的对象,如果返回值不是一个对象那么this还是指向函数的实例
function fn(){ this.num = 1;}var a = new fn();console.log(a.num); //1首先new关键字会创建一个空的对象,然后会自动调用一个函数apply方法,将this指向这个空对象,这样的话函数内部的this就会被这个空的对象替代。
0 0
- 神奇的this
- Javascript 中神奇的 this
- 聊聊Javascript中神奇的关键字this
- this的神奇应用,用于构造方法之间调用
- 神奇的的调色板
- 神奇的*号
- 一组神奇的图片
- 神奇的一天
- 神奇的预言
- 神奇的jsfl!
- 神奇的VIM
- 神奇的猴子Mono
- 神奇的xx宏
- 神奇的视觉艺术
- 神奇的上班路上
- 神奇的视觉艺术
- 神奇的 DataGrid
- 神奇的食物
- Hadoop HA的理解
- CTO、技术总监、首席架构师的区别
- [普及]NOIP 2003 乒乓球
- [BZOJ1967][Ahoi2005]CROSS 穿越磁场(离散化+spfa)
- Servlet
- 神奇的this
- jquery 自定义方法名
- 增删查改——IT界的油盐酱醋
- 快速幂
- 电路基础知识 -- 虚短和虚断
- Java工程师成神之路~
- numpy基础——ndarray对象方法
- spring框架的入门学习
- 调试bug有奇招,15年的老司机 Bug 调试经验总结