为了账号安全,请及时绑定邮箱和手机立即绑定

javascript 中 this 的问题,表达式何时进行求值?

javascript 中 this 的问题,表达式何时进行求值?

墨色风雨 2019-04-16 20:27:57
javascriptvarfoo={x:3,exe:function(){console.log(this);returnthis.x;}}为什么javascriptvara=foo.exe;a();//undefinedNO.1(foo.exe=foo.exe)()//undefinedNO.2而javascript(foo.exe)()//3NO.3foo.exe()//3NO.4特别是NO.3这种情况,小括号起到了什么作用?为什么this仍然指向这个对象?而NO.2和NO.1则指向了window?
查看完整描述

2 回答

?
慕后森

TA贡献1802条经验 获得超5个赞

前两种情况是一样的,相当于返回了这个函数。括号只是用来表示优先级的,而第二个和第三个的区别是第二个是一个表达式,有返回的。拆开来就是
vara=(foo.exe=foo.exe);
a();
函数的this只和运行时的上下文有关,和声明定义时的上下文无关。此时a变量的上下文就是window所以this.x自然是undefined。
第三种和第四种的情况是一样的,那个括号加上和没加都一样,具体就不多表了,不懂的话再提出来吧。
最后,SF上关于this的问题非常多,你提出的这个也有相关的问题,可以搜索学习一下。
                            
查看完整回答
反对 回复 2019-04-16
  • 2 回答
  • 0 关注
  • 324 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信