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());結(jié)果是Aurelio De Rosa和John Doe ,請問是怎么解出的結(jié)果啊。謝謝
1 回答
已采納

__innocence
TA貢獻(xiàn)313條經(jīng)驗(yàn) 獲得超208個贊
第一個結(jié)果你應(yīng)該知道吧,一層層取屬性,obj.prop.getFullname(),
function()?{????????????????????
??????????return?this.fullname;??????????????
????????}
這個函數(shù)里面沒有fullname這個屬性,由于js函數(shù)閉包的存在,js向上一層尋找fullname,結(jié)果就是Aurelio De Rosa
第二個其實(shí)也很容易,但是要注意它和第一個有一個區(qū)別,就是那個括號,不加括號的情況就是:
var?test?=?obj.prop.getFullname; 這一句可以換成:
var?test?= this.fullname;
this指的是上下文,和test在同一上下文環(huán)境的fullname,就是John Doe
望采納??!
添加回答
舉報(bào)
0/150
提交
取消