對象的創(chuàng)建
來自一名前端小白的學(xué)習(xí)總結(jié)毅糟,如有哪里寫錯(cuò)了請指教~
一.通過字面量
其中铐然,name,age,girls,eat,speak都是對象person的屬性,但是在對象中,如果屬性后面跟的是一個(gè)函數(shù)放祟,那么會(huì)把那個(gè)后面跟函數(shù)的屬性稱為這個(gè)對象的方法吻贿。 ?
可用點(diǎn)語法輸出對象的值串结,如:console.log(person.age);輸出結(jié)果為:20; ? ? ? ??
也可用[]語法輸出對象的值廓八,不過不同的是點(diǎn)語法后面跟的是常量奉芦,而[]里面寫的是變量
如:var pro = prompt("請輸入屬性名:"); ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? console.log(person[pro]);
二.工廠方法
調(diào)用:var p1 = createPerson("李四", 20, "男"); ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?var p2 = createPerson("張三", 21, "男");
使用工廠模式創(chuàng)建對象可以解決多個(gè)對象的創(chuàng)建問題。
三.構(gòu)造函數(shù)
其實(shí)使用 new 構(gòu)造函數(shù)()? 的方式創(chuàng)建對象剧蹂,經(jīng)歷了下面幾個(gè)步驟声功。 ? ? ? ? ? ? ? ? ? ? ? ? ?
?1.創(chuàng)建出來一個(gè)新的對象 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
? 2.將構(gòu)造函數(shù)的作用域賦給新對象。意味著這個(gè)時(shí)候this就代表了這個(gè)新對象宠叼。 ??
? 3.執(zhí)行構(gòu)造函數(shù)中的代碼先巴。 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
? 4.構(gòu)造函數(shù)執(zhí)行完畢之后,默認(rèn)返回新對象冒冬。 所以外面就可以拿到這個(gè)剛剛創(chuàng)建的新對象了伸蚯。
調(diào)用函數(shù)時(shí)通過new來判斷調(diào)用的是普通函數(shù)還是構(gòu)造函數(shù),一般構(gòu)造函數(shù)的函數(shù)名通過“大駝峰”命名法命名简烤,即每個(gè)單詞的首字母大寫剂邮,如:Person;普通函數(shù)的函數(shù)名通過“小駝峰”命名法命名,即第一個(gè)單詞全小寫横侦,第一個(gè)單詞之后的每個(gè)單詞首字母大寫,如:person;
普通函數(shù)和構(gòu)造函數(shù)的區(qū)別
構(gòu)造函數(shù):new 函數(shù)() ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? ? ?默認(rèn)返回創(chuàng)建的那個(gè)對象
普通函數(shù):函數(shù)() ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ?默認(rèn)返回undefined