JS中为啥object中,this指向window?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JS中为啥object中,this指向window?相关的知识,希望对你有一定的参考价值。
小白,可以骂我;
var obj =
a:10,
b:this,
c:
a1:20,
b1:this
obj.b 我就想不明白。 为什么这个对象中的属性b 会指向window;
即使是对象包裹多层; 这个c对象中的b1也会指向window?
求大佬给解答一下;
我是这样理解的;函数也是对象,谁调用这个函数;this就指向谁?
obj也是对象,那么这个obj在哪个环境运行;this就指向谁; 但是这个obj中的c是在obj中运行的,为啥 b1 也指向window?
刚开始学,很容易对javascript中的this搞得晕头转向,因为它指向谁,取决于它所在的地方。
在方法中,this 表示该方法所属的对象。
如果单独使用,this 表示全局对象。
在函数中,this 表示全局对象,在严格模式下,this 是未定义的(undefined)。
在事件中,this 表示接收事件的元素。
类似 call() 和 apply() 方法可以将 this 引用到任何对象。
你这个例子里就属于单独使用,所以这里的this代表的是全局对象,浏览器环境下就说window了。
把你的例子稍微改一下:
var obj =
a: 20,
b: function() return this.a+= 10
这时候执行 obj.b(),就发现这里的this指向的是obj了,也就算上述的第一条。关于this的指向要多练习,多思考,因为它确实乱糟糟,所以在ES6中出现了箭头函数,缓解了这个噩梦。
追问1
参考技术A b是obj的属性,b1是c的属性,请注意,它们并不是方法或函数,所以它们并没有你所谓的“运行”,所以this只能指向全局对象也就是window以上是关于JS中为啥object中,this指向window?的主要内容,如果未能解决你的问题,请参考以下文章