javascript - js这个this指向window?
迷茫
迷茫 2017-04-11 12:46:46
[JavaScript讨论组]
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);`

``

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

迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

全部回复(4)
阿神

摘自:JavaScript秘密花园:this的工作原理

天蓬老师

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

怪我咯

javascript一共有4种调用方式,题主举的例子是使用方法调用模式,方法调用模式中的this被绑定到对象上。
详情可以参见JavaScript 中this在不同调用模式中的差异
addEventListener中事件函数的this指向

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号