描述你的问题 :下面的代码中为什么this指向的是window而不是obj,下面图片的信息是控制台输出的是window对象
贴上相关代码
obj = {
go: function() {
console.info(this)
}
};
(0 || obj.go)();
贴上报错信息:无报错信息
贴上相关截图
![图片上传中...]
已经尝试过哪些方法仍然没解决(附上相关链接)不知道该怎么解决
描述你的问题 :下面的代码中为什么this指向的是window而不是obj,下面图片的信息是控制台输出的是window对象
贴上相关代码
obj = {
go: function() {
console.info(this)
}
};
(0 || obj.go)();
贴上报错信息:无报错信息
贴上相关截图
![图片上传中...]
已经尝试过哪些方法仍然没解决(附上相关链接)不知道该怎么解决
对于this,最简单的理解方式就是:某个function里面的this指向调用这个function的对象;
例如func:
1、obj.func
func
里面的this
指向obj
2、func()
在浏览器中实际上是window.func()
,所以指向window
3、func
被当做构造函数,实际上也是要构造的对象调用的func
所以指向构造的对象
.........
this:
在构造函数中 , 指向 new 出来的object
在对象的方法中 指向 对象
在全局范围 指向 宿主 对象,浏览器是window,node是global
在 函数中
strict 模式 undefined
非strict ,宿主对象
obj = {
go: function() {
console.info(this)
}
};
(0 || obj.go)(); // obj.go 是一个函数(理解成取键对应的值) ,所以看 第4点 建议写代码都用strict 模式
还有strict模式中,变量obj 没定义会报错的
8 回答4.7k 阅读✓ 已解决
6 回答3.4k 阅读✓ 已解决
5 回答2.8k 阅读✓ 已解决
5 回答6.3k 阅读✓ 已解决
4 回答2.3k 阅读✓ 已解决
4 回答2.8k 阅读✓ 已解决
3 回答2.4k 阅读✓ 已解决
懒得写了,反正都是我写的,截图吧
原文链接:http://zonxin.github.io/post/2015/11/javascript-this/
点击查看大图