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声明的变量才会限制在该作用域中。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏