expression - javascript 中 this 的问题,表达式何时进行求值?
ringa_lee
ringa_lee 2017-04-10 14:53:48
[JavaScript讨论组]
javascriptvar foo={   x:3,
            exe:function(){  
                console.log(this);
                return this.x;
            }
        }

为什么

javascriptvar a = foo.exe;
a();//undefined         NO.1

(foo.exe=foo.exe)()//undefined    NO.2

javascript(foo.exe)() //3       NO.3
foo.exe()   //3       NO.4

特别是 NO.3 这种情况,小括号起到了什么作用?为什么 this 仍然指向这个对象?而 NO.2 和 NO.1 则指向了 window?

ringa_lee
ringa_lee

ringa_lee

全部回复(1)
大家讲道理

前两种情况是一样的,相当于返回了这个函数。括号只是用来表示优先级的,而第二个和第三个的区别是第二个是一个表达式,有返回的。拆开来就是

var a = (foo.exe = foo.exe);
a();

函数的this只和运行时的上下文有关,和声明定义时的上下文无关。此时a 变量的上下文就是 window 所以 this.x 自然是 undefined

第三种和第四种的情况是一样的,那个括号加上和没加都一样,具体就不多表了,不懂的话再提出来吧。

最后,SF 上关于 this 的问题非常多,你提出的这个也有相关的问题,可以搜索学习一下。

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

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