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

js函数调用问题

js函数调用问题

呼唤远方 2019-03-20 17:19:59
var color = "green";    var test = {        color:"blue",        getColor:function(){            var color = "red";            alert(this.color);        }    }    var getColor = test.getColor;//js函数调用时加括号和不加括号的区别:不加括号相当于把函数代码赋给等号左边,加括号是把函数返回值赋给等号左边    getColor(); //为windows调用    test.getColor();//为test对象调用运行第一个getColor(),alert弹出的的不应该是"green"吗,为什么我这里是undefined?两个alert显示的值:
查看完整描述

6 回答

?
慕标琳琳

TA贡献1830条经验 获得超9个赞

你是在控制台去运行的吧,最后一个undefined是因为没有return值,可以忽略


查看完整回答
反对 回复 2019-04-02
?
陪伴而非守候

TA贡献1757条经验 获得超8个赞

把你编辑器里原始代码截图发一下


查看完整回答
反对 回复 2019-04-02
?
海绵宝宝撒

TA贡献1809条经验 获得超8个赞

第一个调用的时候 this 是window
第二个才是 test

查看完整回答
反对 回复 2019-04-02
?
白猪掌柜的

TA贡献1893条经验 获得超10个赞

这是因this的指向,是在函数调用的时候绑定的,而不是在函数声明的时候,与当前的执行上下文环境有关。第一个函数调用的执行上下文是window,而第二个test对象。所以答案显而易见。


查看完整回答
反对 回复 2019-04-02
  • 6 回答
  • 0 关注
  • 435 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号