国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【前端知識(shí)】JavaScript——設(shè)計(jì)模式(工廠模式、構(gòu)造函數(shù)模式、原型模式)

這篇具有很好參考價(jià)值的文章主要介紹了【前端知識(shí)】JavaScript——設(shè)計(jì)模式(工廠模式、構(gòu)造函數(shù)模式、原型模式)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

【前端知識(shí)】JavaScript——設(shè)計(jì)模式(工廠模式、構(gòu)造函數(shù)模式、原型模式)

一、工廠模式

工廠模式是一種眾所周知的設(shè)計(jì)模式,廣泛應(yīng)用于軟件工程領(lǐng)域,用于抽象創(chuàng)建特定對(duì)象的過(guò)程。

優(yōu)點(diǎn):可以解決創(chuàng)建多個(gè)類似對(duì)象的問(wèn)題

缺點(diǎn):沒(méi)有解決對(duì)象標(biāo)識(shí)問(wèn)題(即新創(chuàng)建的對(duì)象是什么類型)

示例:文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-616409.html

function createPerson(name, age, job) { 
    // 創(chuàng)建對(duì)象,將值賦值給該對(duì)象后,返回
    let o = new Object(); 
    o.name = name; 
    o.age = age; 
    o.job = job; 
    o.sayName = function() { 
        console.log(this.name); 
    }; 
    // 返回對(duì)象
    return o; 
} 
let person1 = createPerson("Nicholas", 29, "Software Engineer"); 
let person2 = createPerson("Greg", 27, "Doctor");

二、構(gòu)造函數(shù)模式

構(gòu)造函數(shù)模式與工廠模式相比,沒(méi)有顯式地創(chuàng)建對(duì)象,其屬性和方法直接賦值給了 this,且沒(méi)有 return。

優(yōu)點(diǎn):定義自定義構(gòu)造函數(shù)可以確保實(shí)例被標(biāo)識(shí)為特定類型

缺點(diǎn):其定義的方法會(huì)在每個(gè)實(shí)例上都創(chuàng)建一遍

示例:

// 區(qū)別1: 函數(shù)名大寫(xiě),為了與普通函數(shù)區(qū)分
function Person(name, age, job){ 
    // 區(qū)別2: 與工廠模式不同,傳入的參數(shù)賦值給this
    this.name = name; 
    this.age = age; 
    this.job = job; 
    this.sayName = function() { 
        console.log(this.name); 
    }; 
    //  區(qū)別3: 無(wú)需返回對(duì)象
} 
// 區(qū)別4: 通過(guò)new操作符,創(chuàng)建Person實(shí)例
let person1 = new Person("Nicholas", 29, "Software Engineer"); 
let person2 = new Person("Greg", 27, "Doctor"); 
person1.sayName(); // Nicholas 
person2.sayName(); // Greg

注意:使用 new 操作符調(diào)用構(gòu)造函數(shù)的執(zhí)行過(guò)程:

步驟 過(guò)程
1 在內(nèi)存中創(chuàng)建一個(gè)新對(duì)象。
2 這個(gè)新對(duì)象內(nèi)部的[[Prototype]]特性被賦值為構(gòu)造函數(shù)的 prototype 屬性。
3 構(gòu)造函數(shù)內(nèi)部的 this 被賦值為這個(gè)新對(duì)象(即 this 指向新對(duì)象)。
4 執(zhí)行構(gòu)造函數(shù)內(nèi)部的代碼(給新對(duì)象添加屬性)。
5 如果構(gòu)造函數(shù)返回非空對(duì)象,則返回該對(duì)象;否則,返回剛創(chuàng)建的新對(duì)象。

三、原型模式

每個(gè)函數(shù)都會(huì)創(chuàng)建一個(gè) prototype 屬性,這個(gè)屬性是一個(gè)對(duì)象,包含應(yīng)該由特定引用類型的實(shí)例共享的屬性和方法。

優(yōu)點(diǎn):在它上面定義的屬性和方法可以被對(duì)象實(shí)例共享

缺點(diǎn):所有實(shí)例在默認(rèn)情況先都將取得相同的屬性值

示例:

function Person() {} 
Person.prototype.name = "Nicholas"; 
Person.prototype.age = 29; 
Person.prototype.job = "Software Engineer"; 
Person.prototype.sayName = function() { 
    console.log(this.name); 
}; 
let person1 = new Person(); 
person1.sayName(); // "Nicholas" 
let person2 = new Person(); 
person2.sayName(); // "Nicholas" 
console.log(person1.sayName == person2.sayName); // true

到了這里,關(guān)于【前端知識(shí)】JavaScript——設(shè)計(jì)模式(工廠模式、構(gòu)造函數(shù)模式、原型模式)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 前端設(shè)計(jì)模式:工廠方法模式、單例模式、訂閱模式、中介者模式

    工廠方法模式是一種創(chuàng)建型設(shè)計(jì)模式,它提供了一種將對(duì)象的創(chuàng)建與使用分離的方式。在工廠方法模式中,我們定義一個(gè)工廠接口,該接口聲明了一個(gè)用于創(chuàng)建對(duì)象的方法。具體的對(duì)象創(chuàng)建則由實(shí)現(xiàn)該接口的具體工廠類來(lái)完成。 工廠方法模式的核心思想是將對(duì)象的創(chuàng)建延遲到

    2024年02月12日
    瀏覽(91)
  • 【計(jì)算機(jī)基礎(chǔ)知識(shí)9】前端設(shè)計(jì)模式與常見(jiàn)類型

    【計(jì)算機(jī)基礎(chǔ)知識(shí)9】前端設(shè)計(jì)模式與常見(jiàn)類型

    目錄 一、前言 二、設(shè)計(jì)模式的基本概念和原則 三、創(chuàng)建型設(shè)計(jì)模式 四、結(jié)構(gòu)型設(shè)計(jì)模式 五、行為型設(shè)計(jì)模式 六、MVC和MVVM框架中的設(shè)計(jì)模式 七、實(shí)際應(yīng)用案例分析 在軟件開(kāi)發(fā)領(lǐng)域,設(shè)計(jì)模式是一種解決常見(jiàn)問(wèn)題的最佳實(shí)踐,它可以幫助開(kāi)發(fā)者在面對(duì)不斷變化的需求和環(huán)境

    2024年02月09日
    瀏覽(21)
  • 自學(xué)設(shè)計(jì)模式(簡(jiǎn)單工廠模式、工廠模式、抽象工廠模式)

    使用工廠模式來(lái)生產(chǎn)某類對(duì)象(代碼簡(jiǎn)化且容易維護(hù),類之間有血緣關(guān)系,可以通過(guò)工廠類進(jìn)行生產(chǎn)); 簡(jiǎn)單工廠模式(用于創(chuàng)建簡(jiǎn)單對(duì)象) 對(duì)于簡(jiǎn)單工廠模式,需要的工廠類只有一個(gè); 在工廠類中的公共成員函數(shù)來(lái)創(chuàng)建所需對(duì)象; 工廠模式 簡(jiǎn)單工廠模式會(huì)違反開(kāi)放封閉

    2024年02月11日
    瀏覽(27)
  • 反射和工廠設(shè)計(jì)模式---工廠設(shè)計(jì)模式

    工廠模式(Factory Pattern)是開(kāi)發(fā)中比較常用的設(shè)計(jì)模式之一。 它屬于創(chuàng)建型模式(單例模式就是創(chuàng)建型模式的一種),這種模式讓我們 在創(chuàng)建對(duì)象時(shí)不會(huì)直接暴露創(chuàng)建邏輯,而是通過(guò)使用一個(gè)共同的接口來(lái)完成對(duì)象的創(chuàng)建 。 工廠模式可以分為三種,分別是簡(jiǎn)單工廠模式、工廠方

    2024年02月13日
    瀏覽(22)
  • 設(shè)計(jì)模式(二)、工廠模式--工廠方法模式

    工廠方法模式是一種常用的創(chuàng)建型設(shè)計(jì)模式。它解決了簡(jiǎn)單工廠模式的問(wèn)題:如違反了開(kāi)閉原則,其次可以用于更復(fù)雜的結(jié)構(gòu) 它的核心結(jié)構(gòu)有四個(gè)角色? 抽象工廠;具體工廠;抽象產(chǎn)品;具體產(chǎn)品 抽象工廠(抽象類或接口)不在負(fù)責(zé)具體的創(chuàng)建過(guò)程,即具體的代碼實(shí)現(xiàn)。只制定

    2024年02月16日
    瀏覽(21)
  • 設(shè)計(jì)模式(二)、工廠模式--簡(jiǎn)單工廠模式

    簡(jiǎn)單工廠模式:又叫做靜態(tài)工廠方法模式,是由一個(gè)工廠對(duì)象決定創(chuàng)建出哪一種產(chǎn)品類的實(shí)例。 需要注意的是:簡(jiǎn)單工廠模式屬于創(chuàng)建型模式,但不屬于23種GOF設(shè)計(jì)模式之一? 該模式主要有以下幾個(gè)模塊構(gòu)成: 具體說(shuō)明結(jié)合代碼,如下: 代碼中主要是有一個(gè)cake接父類,兩個(gè)

    2024年02月13日
    瀏覽(22)
  • 【設(shè)計(jì)模式】單例模式、工廠方法模式、抽象工廠模式

    1. 單例模式 (Singleton Pattern): 場(chǎng)景: 在一個(gè)應(yīng)用程序中,需要一個(gè)全局唯一的配置管理器,確保配置信息只有一個(gè)實(shí)例。 2. 工廠方法模式 (Factory Method Pattern): 場(chǎng)景: 創(chuàng)建一組具有相似功能但具體實(shí)現(xiàn)不同的日志記錄器。 3. 抽象工廠模式 (Abstract Factory Pattern): 場(chǎng)景: 創(chuàng)建不同

    2024年01月15日
    瀏覽(29)
  • 設(shè)計(jì)模式-工廠設(shè)計(jì)模式

    設(shè)計(jì)模式-工廠設(shè)計(jì)模式

    在簡(jiǎn)單工廠模式的基礎(chǔ)上進(jìn)一步的抽象化 具備更多的可擴(kuò)展和復(fù)用性,增強(qiáng)代碼的可讀性 使添加產(chǎn)品不需要修改原來(lái)的代碼,滿足 開(kāi)閉原則 優(yōu)點(diǎn) 符合 單一職責(zé) ,每個(gè)工廠只負(fù)責(zé)生產(chǎn)對(duì)應(yīng)的產(chǎn)品 符合 開(kāi)閉原則 ,添加產(chǎn)品只需添加對(duì)應(yīng)的產(chǎn)品類和工廠類 使用者只需要知道

    2024年02月11日
    瀏覽(20)
  • 設(shè)計(jì)模式-簡(jiǎn)單工廠模式(靜態(tài)工廠模式)java實(shí)現(xiàn)

    設(shè)計(jì)模式-簡(jiǎn)單工廠模式(靜態(tài)工廠模式)java實(shí)現(xiàn)

    簡(jiǎn)單工廠模式根據(jù)所 提供的參數(shù) 數(shù)據(jù)返回幾個(gè)可能類中的一個(gè)類的實(shí)例。通常返回的類都有一個(gè)公共的父類和公共的方法。 ? 意圖 提供一個(gè)類,負(fù)責(zé)根據(jù)一定的條件創(chuàng)建某一具體類的實(shí)例。同時(shí)使用工廠模式也是為了隱藏創(chuàng)建對(duì)象的過(guò)程 角色及其職責(zé) (1)工廠(Creator)角色

    2024年02月13日
    瀏覽(28)
  • 【創(chuàng)建型設(shè)計(jì)模式】C#設(shè)計(jì)模式之工廠模式,以及通過(guò)反射實(shí)現(xiàn)動(dòng)態(tài)工廠。

    題目如下: 簡(jiǎn)單工廠實(shí)現(xiàn): 上述代碼給出了抽象基類的基本定義,和泛型工廠的實(shí)現(xiàn)方式,以及調(diào)用方式。 值得注意的是 where T : Car, new() 這個(gè)條件: where T : Car, new() 是對(duì)泛型類型參數(shù) T 的約束。這個(gè)約束表明泛型類型參數(shù) T 必須滿足兩個(gè)條件: T 必須是 Car 類或者其派生類

    2024年02月11日
    瀏覽(18)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包