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