關于JS里的對象。創建函數對象和函數對象屬性的調用。
老師,各位大蝦,我想問個問題 就是 我在使用控制臺的時候發現,首先聲明一個 function abc(){this.ddd=function{alert("1111")}};然后我前后分別定義var a=abc,a=abc(),a=new abc();都是返回undefined;再輸入a的時候 ,分別出現 function abc(){內容省去};undefined;最后一個返回了a{ddd:function} ?這三者有什么區別嗎? ?調用a.ddd的時候只有 a=new abc()這一個有返回一個函數,其他的都是undefined。 求解釋。。。這三者分別是什么意思。。
2015-12-15
2015-12-15
首先,function abc(){...} 創建了一個名為abc的函數,此時abc中保存的是函數abc()的地址,所以var a = abc;會將函數abc的地址傳給a。這個時候a不應該是undefined,a應該和abc等價,相當于都指向函數abc()。
var a = abc
console.log(a === abc) // true
第二句a = abc(), 相當于將函數abc的執行結果保存到a中,而函數abc是沒有返回值的,所以a = undefined。你可以在function abc(){... return true;} 加返回值。這個時候 a = abc(); console.log(a)?? // true
第三句就很好理解了,var a = new abc(),將對象abc的引用賦值給a 。所以這時候a有方法ddd。