成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

JavaScript設(shè)計(jì)模式系列四:原型模式

Pluser / 3078人閱讀

摘要:車輛的模具是福特如果你希望自己去實(shí)現(xiàn)原型模式,而不直接使用。車輛模具是福特總結(jié)原型模式,就是創(chuàng)建一個(gè)共享的原型,通過(guò)拷貝這個(gè)原型來(lái)創(chuàng)建新的類,用于創(chuàng)建重復(fù)的對(duì)象,帶來(lái)性能上的提升。參考自湯姆大叔的博客設(shè)計(jì)模式之原型模式

什么是原型模式

原型模式 (Prototype pattern):通俗點(diǎn)講就是創(chuàng)建一個(gè)共享的原型,并通過(guò)拷貝這些原型創(chuàng)建新的對(duì)象。用于創(chuàng)建重復(fù)的對(duì)象,這種類型的設(shè)計(jì)模式屬于創(chuàng)建型模式,它提供了一種創(chuàng)建對(duì)象的不錯(cuò)選擇。

實(shí)現(xiàn)原型模式

我們可以通過(guò)JavaScript特有的原型繼承特性去實(shí)現(xiàn)原型模式,也就是創(chuàng)建一個(gè)對(duì)象作為另一個(gè)對(duì)象的prototype屬性值,我們也可以通過(guò)Object.create(prototype, optionalDescriptorObjects)來(lái)實(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è)共享的原型,通過(guò)拷貝這個(gè)原型來(lái)創(chuàng)建新的類,用于創(chuàng)建重復(fù)的對(duì)象,帶來(lái)性能上的提升。

參考自湯姆大叔的博客設(shè)計(jì)模式之原型模式

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/92632.html

相關(guān)文章

  • JavaScript系列) - 收藏集 - 掘金

    摘要:函數(shù)式編程前端掘金引言面向?qū)ο缶幊桃恢币詠?lái)都是中的主導(dǎo)范式。函數(shù)式編程是一種強(qiáng)調(diào)減少對(duì)程序外部狀態(tài)產(chǎn)生改變的方式。 JavaScript 函數(shù)式編程 - 前端 - 掘金引言 面向?qū)ο缶幊桃恢币詠?lái)都是JavaScript中的主導(dǎo)范式。JavaScript作為一門多范式編程語(yǔ)言,然而,近幾年,函數(shù)式編程越來(lái)越多得受到開(kāi)發(fā)者的青睞。函數(shù)式編程是一種強(qiáng)調(diào)減少對(duì)程序外部狀態(tài)產(chǎn)生改變的方式。因此,...

    cfanr 評(píng)論0 收藏0
  • JavaScript系列--淺析原型鏈與繼承

    摘要:綜上所述有原型鏈繼承,構(gòu)造函數(shù)繼承經(jīng)典繼承,組合繼承,寄生繼承,寄生組合繼承五種方法,寄生組合式繼承,集寄生式繼承和組合繼承的優(yōu)點(diǎn)于一身是實(shí)現(xiàn)基于類型繼承的最有效方法。 一、前言 繼承是面向?qū)ο螅∣OP)語(yǔ)言中的一個(gè)最為人津津樂(lè)道的概念。許多面對(duì)對(duì)象(OOP)語(yǔ)言都支持兩種繼承方式::接口繼承 和 實(shí)現(xiàn)繼承 。 接口繼承只繼承方法簽名,而實(shí)現(xiàn)繼承則繼承實(shí)際的方法。由于js中方法沒(méi)有簽名...

    draveness 評(píng)論0 收藏0
  • JavaScript面向?qū)ο蟮某绦?em>設(shè)計(jì)

    摘要:目錄導(dǎo)語(yǔ)理解對(duì)象和面向?qū)ο蟮某绦蛟O(shè)計(jì)創(chuàng)建對(duì)象的方式的繼承機(jī)制原型對(duì)象原型鏈與原型對(duì)象相關(guān)的方法小結(jié)導(dǎo)語(yǔ)前面的系列文章,基本把的核心知識(shí)點(diǎn)的基本語(yǔ)法標(biāo)準(zhǔn)庫(kù)等章節(jié)講解完本章開(kāi)始進(jìn)入核心知識(shí)點(diǎn)的高級(jí)部分面向?qū)ο蟮某绦蛟O(shè)計(jì),這一部分的內(nèi)容將會(huì)對(duì)對(duì)象 目錄 導(dǎo)語(yǔ) 1.理解對(duì)象和面向?qū)ο蟮某绦蛟O(shè)計(jì) 2.創(chuàng)建對(duì)象的方式 3.JavaScript的繼承機(jī)制 3.1 原型對(duì)象 3.2 原型鏈 3.3 與...

    gitmilk 評(píng)論0 收藏0
  • 深入理解JavaScript

    摘要:深入之繼承的多種方式和優(yōu)缺點(diǎn)深入系列第十五篇,講解各種繼承方式和優(yōu)缺點(diǎn)。對(duì)于解釋型語(yǔ)言例如來(lái)說(shuō),通過(guò)詞法分析語(yǔ)法分析語(yǔ)法樹(shù),就可以開(kāi)始解釋執(zhí)行了。 JavaScript深入之繼承的多種方式和優(yōu)缺點(diǎn) JavaScript深入系列第十五篇,講解JavaScript各種繼承方式和優(yōu)缺點(diǎn)。 寫在前面 本文講解JavaScript各種繼承方式和優(yōu)缺點(diǎn)。 但是注意: 這篇文章更像是筆記,哎,再讓我...

    myeveryheart 評(píng)論0 收藏0
  • JavaScript深入之創(chuàng)建對(duì)象的多種方式以及優(yōu)缺點(diǎn)

    摘要:深入系列第十四篇,講解創(chuàng)建對(duì)象的各種方式,以及優(yōu)缺點(diǎn)。也就是說(shuō)打著構(gòu)造函數(shù)的幌子掛羊頭賣狗肉,你看創(chuàng)建的實(shí)例使用都無(wú)法指向構(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....

    Terry_Tai 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<