摘要:車輛的模具是福特如果你希望自己去實(shí)現(xiàn)原型模式,而不直接使用。車輛模具是福特總結(jié)原型模式,就是創(chuàng)建一個(gè)共享的原型,通過拷貝這個(gè)原型來創(chuàng)建新的類,用于創(chuàng)建重復(fù)的對(duì)象,帶來性能上的提升。參考自湯姆大叔的博客設(shè)計(jì)模式之原型模式
什么是原型模式
原型模式 (Prototype pattern):通俗點(diǎn)講就是創(chuàng)建一個(gè)共享的原型,并通過拷貝這些原型創(chuàng)建新的對(duì)象。用于創(chuàng)建重復(fù)的對(duì)象,這種類型的設(shè)計(jì)模式屬于創(chuàng)建型模式,它提供了一種創(chuàng)建對(duì)象的不錯(cuò)選擇。
實(shí)現(xiàn)原型模式我們可以通過JavaScript特有的原型繼承特性去實(shí)現(xiàn)原型模式,也就是創(chuàng)建一個(gè)對(duì)象作為另一個(gè)對(duì)象的prototype屬性值,我們也可以通過Object.create(prototype, optionalDescriptorObjects)來實(shí)現(xiàn)原型繼承。
// 因?yàn)椴皇菢?gòu)造函數(shù),所以不用大寫 var someCar = { drive: function () { }, name: "馬自達(dá) 3" }; // 使用Object.create創(chuàng)建一個(gè)新車x var anotherCar = Object.create(someCar); anotherCar.name = "豐田佳美";
Object.create() 方法會(huì)使用指定的原型對(duì)象及其屬性去創(chuàng)建一個(gè)新的對(duì)象。
var vehicle = { getModel: function () { console.log("車輛的模具是:" + this.model); } }; var car = Object.create(vehicle, { "id": { value: MY_GLOBAL.nextId(), enumerable: true }, "model": { value: "福特", enumerable: true } });
如果你希望自己去實(shí)現(xiàn)原型模式,而不直接使用Object.create。你可以使用一下代碼實(shí)現(xiàn)。
var vehiclePrototype = { init: function (carModel) { this.model = carModel; }, getModel: function () { console.log("車輛模具是:" + this.model); } }; function vehicle(model) { function F() { }; F.prototype = vehiclePrototype; var f = new F(); f.init(model); return f; } var car = vehicle("福特Escort"); car.getModel();總結(jié):
原型模式,就是創(chuàng)建一個(gè)共享的原型,通過拷貝這個(gè)原型來創(chuàng)建新的類,用于創(chuàng)建重復(fù)的對(duì)象,帶來性能上的提升。
參考自湯姆大叔的博客設(shè)計(jì)模式之原型模式
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/92632.html
摘要:函數(shù)式編程前端掘金引言面向?qū)ο缶幊桃恢币詠矶际侵械闹鲗?dǎo)范式。函數(shù)式編程是一種強(qiáng)調(diào)減少對(duì)程序外部狀態(tài)產(chǎn)生改變的方式。 JavaScript 函數(shù)式編程 - 前端 - 掘金引言 面向?qū)ο缶幊桃恢币詠矶际荍avaScript中的主導(dǎo)范式。JavaScript作為一門多范式編程語言,然而,近幾年,函數(shù)式編程越來越多得受到開發(fā)者的青睞。函數(shù)式編程是一種強(qiáng)調(diào)減少對(duì)程序外部狀態(tài)產(chǎn)生改變的方式。因此,...
摘要:綜上所述有原型鏈繼承,構(gòu)造函數(shù)繼承經(jīng)典繼承,組合繼承,寄生繼承,寄生組合繼承五種方法,寄生組合式繼承,集寄生式繼承和組合繼承的優(yōu)點(diǎn)于一身是實(shí)現(xiàn)基于類型繼承的最有效方法。 一、前言 繼承是面向?qū)ο螅∣OP)語言中的一個(gè)最為人津津樂道的概念。許多面對(duì)對(duì)象(OOP)語言都支持兩種繼承方式::接口繼承 和 實(shí)現(xiàn)繼承 。 接口繼承只繼承方法簽名,而實(shí)現(xiàn)繼承則繼承實(shí)際的方法。由于js中方法沒有簽名...
摘要:目錄導(dǎo)語理解對(duì)象和面向?qū)ο蟮某绦蛟O(shè)計(jì)創(chuàng)建對(duì)象的方式的繼承機(jī)制原型對(duì)象原型鏈與原型對(duì)象相關(guān)的方法小結(jié)導(dǎo)語前面的系列文章,基本把的核心知識(shí)點(diǎn)的基本語法標(biāo)準(zhǔn)庫等章節(jié)講解完本章開始進(jìn)入核心知識(shí)點(diǎn)的高級(jí)部分面向?qū)ο蟮某绦蛟O(shè)計(jì),這一部分的內(nèi)容將會(huì)對(duì)對(duì)象 目錄 導(dǎo)語 1.理解對(duì)象和面向?qū)ο蟮某绦蛟O(shè)計(jì) 2.創(chuàng)建對(duì)象的方式 3.JavaScript的繼承機(jī)制 3.1 原型對(duì)象 3.2 原型鏈 3.3 與...
摘要:深入之繼承的多種方式和優(yōu)缺點(diǎn)深入系列第十五篇,講解各種繼承方式和優(yōu)缺點(diǎn)。對(duì)于解釋型語言例如來說,通過詞法分析語法分析語法樹,就可以開始解釋執(zhí)行了。 JavaScript深入之繼承的多種方式和優(yōu)缺點(diǎn) JavaScript深入系列第十五篇,講解JavaScript各種繼承方式和優(yōu)缺點(diǎn)。 寫在前面 本文講解JavaScript各種繼承方式和優(yōu)缺點(diǎn)。 但是注意: 這篇文章更像是筆記,哎,再讓我...
摘要:深入系列第十四篇,講解創(chuàng)建對(duì)象的各種方式,以及優(yōu)缺點(diǎn)。也就是說打著構(gòu)造函數(shù)的幌子掛羊頭賣狗肉,你看創(chuàng)建的實(shí)例使用都無法指向構(gòu)造函數(shù)這樣方法可以在特殊情況下使用。 JavaScript深入系列第十四篇,講解創(chuàng)建對(duì)象的各種方式,以及優(yōu)缺點(diǎn)。 寫在前面 這篇文章講解創(chuàng)建對(duì)象的各種方式,以及優(yōu)缺點(diǎn)。 但是注意: 這篇文章更像是筆記,因?yàn)椤禞avaScript高級(jí)程序設(shè)計(jì)》寫得真是太好了! 1....
閱讀 1886·2021-11-15 11:39
閱讀 1091·2020-12-03 17:06
閱讀 746·2019-12-27 11:42
閱讀 3279·2019-08-30 13:59
閱讀 1474·2019-08-26 13:22
閱讀 3291·2019-08-26 12:15
閱讀 2480·2019-08-26 10:22
閱讀 1570·2019-08-23 18:40