js这个this指向window?

var a = {b:function(){console.log(this)},c:console.log(this)};打印a.c
输出Window {external: Object, chrome: Object, document: document, document_saved: 0, GoogleAnalyticsObject: "ga"…}

还有

`var el = document.getElementById("outside");
el.addEventListener("click", function(){modifyText("four")}, false);`

`<table id="t" onclick="modifyText();">`

这里面modifyText()中的this指向有什么异同?

阅读 5.2k
4 个回答

1.b方法中的this要看你的调用方式,如果直接a.b(),这样的话this指向调用b的这个对象,也就是a,这属于方法调用;如果你通过var d = a.b; d(),这时this就指向window,这属于函数调用了,它的执行环境就是window,所以指向它。
2.而c中的this指向window,它的执行环境就是window,输出的window来自它;
3.通过addEventListener给元素绑定事件,this指向绑定这个事件的元素。

新手上路,请多包涵

对象所在的代码块并不创建作用域,因此this仍然在全局域中,故指的是windows对象。在js中,只有函数才能创建一个作用域,且在函数中通过var声明的变量才会限制在该作用域中。

推荐问题
宣传栏