求解JavaScript如何去執行下列代碼?
var fullname ='John Doe';
? ? var obj ={
? ? fullname:'Colin Ihrig',
? ? prop:{
? ? fullname:'Aurelio De Rosa',
? ? getFullname:function(){
? ? returnthis.fullname;
? ? }
? ? }
? ? };
? ? console.log(obj.prop.getFullname());
? ? var test = obj.prop.getFullname;
? ? console.log(test());
2016-07-25
第一個輸出很明顯,是一層一層訪問到的值調用getfullname函數,第二個,注意最后一行? console.log(test());
test后面加了括號,表示test不是一個簡單的字符串類型,可以把代碼轉換一下:把var test = obj.prop.getFullname;這一句換成
?getFullname:function(){
? ? return this.fullname;}
很明顯,這里return的是上面的var fullname ='John Doe';
一句話,test不是以obj為原型的
2016-07-25
Aurelio De Rosa
John Doe
函數閉包問題應該