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

请问这个js的结果是怎么求的?

请问这个js的结果是怎么求的?

onaug6th 2016-12-03 14:34:56
var fullname = 'John Doe'; var obj = {         fullname: 'Colin Ihrig',      prop: {                    fullname: 'Aurelio De Rosa',       getFullname: function() {                               return this.fullname;                       }      } };  console.log(obj.prop.getFullname()); var test = obj.prop.getFullname;  console.log(test());结果是Aurelio De Rosa和John Doe ,请问是怎么解出的结果啊。谢谢
查看完整描述

1 回答

已采纳
?
__innocence

TA贡献313条经验 获得超208个赞

第一个结果你应该知道吧,一层层取属性,obj.prop.getFullname(),

function() {                    

          return this.fullname;              

        }

这个函数里面没有fullname这个属性,由于js函数闭包的存在,js向上一层寻找fullname,结果就是Aurelio De Rosa

第二个其实也很容易,但是要注意它和第一个有一个区别,就是那个括号,不加括号的情况就是:

var test = obj.prop.getFullname; 这一句可以换成:

var test = this.fullname;

this指的是上下文,和test在同一上下文环境的fullname,就是John Doe

望采纳!!

查看完整回答
1 反对 回复 2016-12-03
  • 1 回答
  • 0 关注
  • 1344 浏览
慕课专栏
更多

添加回答

举报

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