麻豆黑色丝袜jk制服福利网站-麻豆精品传媒视频观看-麻豆精品传媒一二三区在线视频-麻豆精选传媒4区2021-在线视频99-在线视频a

千鋒教育-做有情懷、有良心、有品質的職業教育機構

手機站
千鋒教育

千鋒學習站 | 隨時隨地免費學

千鋒教育

掃一掃進入千鋒手機站

領取全套視頻
千鋒教育

關注千鋒學習站小程序
隨時隨地免費學習課程

當前位置:首頁  >  技術干貨  > 對象創建的方式有哪些?

對象創建的方式有哪些?

來源:千鋒教育
發布人:wjy
時間: 2022-09-07 16:58:50 1662541130

一般使用字面量的形式直接創建對象,但是這種創建方式對于創建大量相似對象的時候,會產生大量的重復代碼。但 js和一般的面向對象的語言不同,在 ES6 之前它沒有類的概念。但是可以使用函數來進行模擬,從而產生出可復用的對象創建方式,常見的有以下幾種:

(1)第一種是工廠模式,工廠模式的主要工作原理是用函數來封裝創建對象的細節,從而通過調用函數來達到復用的目的。但是它有一個很大的問題就是創建出來的對象無法和某個類型聯系起來,它只是簡單的封裝了復用代碼,而沒有建立起對象和類型間的關系。

(2)第二種是構造函數模式。js 中每一個函數都可以作為構造函數,只要一個函數是通過 new 來調用的,那么就可以把它稱為構造函數。執行構造函數首先會創建一個對象,然后將對象的原型指向構造函數的 prototype 屬性,然后將執行上下文中的 this 指向這個對象,最后再執行整個函數,如果返回值不是對象,則返回新建的對象。因為 this 的值指向了新建的對象,因此可以使用 this 給對象賦值。構造函數模式相對于工廠模式的優點是,所創建的對象和構造函數建立起了聯系,因此可以通過原型來識別對象的類型。但是構造函數存在一個缺點就是,造成了不必要的函數對象的創建,因為在 js 中函數也是一個對象,因此如果對象屬性中如果包含函數的話,那么每次都會新建一個函數對象,浪費了不必要的內存空間,因為函數是所有的實例都可以通用的。

對象創建的方式有哪些?

(3)第三種模式是原型模式,因為每一個函數都有一個 prototype 屬性,這個屬性是一個對象,它包含了通過構造函數創建的所有實例都能共享的屬性和方法。因此可以使用原型對象來添加公用屬性和方法,從而實現代碼的復用。這種方式相對于構造函數模式來說,解決了函數對象的復用問題。但是這種模式也存在一些問題,一個是沒有辦法通過傳入參數來初始化值,另一個是如果存在一個引用類型如 Array 這樣的值,那么所有的實例將共享一個對象,一個實例對引用類型值的改變會影響所有的實例。

(4)第四種模式是組合使用構造函數模式和原型模式,這是創建自定義類型的最常見方式。因為構造函數模式和原型模式分開使用都存在一些問題,因此可以組合使用這兩種模式,通過構造函數來初始化對象的屬性,通過原型對象來實現函數方法的復用。這種方法很好的解決了兩種模式單獨使用時的缺點,但是有一點不足的就是,因為使用了兩種不同的模式,所以對于代碼的封裝性不夠好。

(5)第五種模式是動態原型模式,這一種模式將原型方法賦值的創建過程移動到了構造函數的內部,通過對屬性是否存在的判斷,可以實現僅在第一次調用函數時對原型對象賦值一次的效果。這一種方式很好地對上面的混合模式進行了封裝。

(6)第六種模式是寄生構造函數模式,這一種模式和工廠模式的實現基本相同,我對這個模式的理解是,它主要是基于一個已有的類型,在實例化時對實例化的對象進行擴展。這樣既不用修改原來的構造函數,也達到了擴展對象的目的。它的一個缺點和工廠模式一樣,無法實現對象的識別。

tags:
聲明:本站稿件版權均屬千鋒教育所有,未經許可不得擅自轉載。
10年以上業內強師集結,手把手帶你蛻變精英
請您保持通訊暢通,專屬學習老師24小時內將與您1V1溝通
免費領取
今日已有369人領取成功
劉同學 138****2860 剛剛成功領取
王同學 131****2015 剛剛成功領取
張同學 133****4652 剛剛成功領取
李同學 135****8607 剛剛成功領取
楊同學 132****5667 剛剛成功領取
岳同學 134****6652 剛剛成功領取
梁同學 157****2950 剛剛成功領取
劉同學 189****1015 剛剛成功領取
張同學 155****4678 剛剛成功領取
鄒同學 139****2907 剛剛成功領取
董同學 138****2867 剛剛成功領取
周同學 136****3602 剛剛成功領取
相關推薦HOT
主站蜘蛛池模板: 国产美女久久精品香蕉69| 日日夜夜天天久久| 1000部又爽又黄无遮挡的视频| 欧美日韩精品一区二区三区不卡 | 好吊妞最新视频免费观看| 动漫美女被羞羞动漫小舞| 精品一区二区久久久久久久网站 | 国产精品成人va在线观看| 樱花草在线社区www韩国| 真正全免费视频a毛片| 96免费精品视频在线观看| 色综合久久一本首久久| 麻豆天美精东果冻星空| 亚洲综合色视频在线观看| ririai66在线观看视频| 免费精品视频在线| 欧美性生活视频免费| 女人被躁免费视频| 久久精品国产亚洲欧美| 高清肉蒲团| 再深点灬舒服灬在快点视频| 毛片女人| 黄页网站在线免费观看| 2019天天干夜夜操| 精品视频一区二区三三区四区| 日韩精品无码一区二区三区| 三年片在线影院| 国产制服丝袜在线| 国产高清吃奶成免费视频网站 | 高嫁肉柳风车动漫| 欧美午夜一区二区福利视频| 厨房切底征服岳完整版| a级毛片免费| 骚虎影院在线观看| 韩国v欧美v亚洲v日本v| 色丁香影院| 国产一级在线| 884aa四虎四虎永久播放地址| 日本高清黄色| 夫妇交换俱乐部微信群| 日本动漫黄观看免费网站|