猿问

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

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 ,请问是怎么解出的结果啊。谢谢

onaug6th
浏览 1350回答 1
1回答

__innocence

第一个结果你应该知道吧,一层层取属性,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望采纳!!
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答