欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

JS實現(xiàn)單例模式的方式有哪些

本篇內(nèi)容介紹了“JS實現(xiàn)單例模式的方式有哪些”的有關(guān)知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細閱讀,能夠?qū)W有所成!

目前創(chuàng)新互聯(lián)公司已為上千余家的企業(yè)提供了網(wǎng)站建設(shè)、域名、雅安服務(wù)器托管、網(wǎng)站托管、服務(wù)器托管、企業(yè)網(wǎng)站設(shè)計、嘉黎網(wǎng)站維護等服務(wù),公司將堅持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。

JS實現(xiàn)單例模式的多種方案

單例模式的概念

  • 一個實例只生產(chǎn)一次

  • 保證一個類僅有一個實例,并提供一個訪問它的全局訪問點

方式1

利用instanceof判斷是否使用new關(guān)鍵字調(diào)用函數(shù)進行對象的實例化

function User() {
    if (!(this instanceof User)) {
        return
    }
    if (!User._instance) {
        this.name = '無名'
        User._instance = this
    }
    return User._instance
}

const u1 = new User()
const u2 = new User()

console.log(u1===u2);// true

方式2

在函數(shù)上直接添加方法屬性調(diào)用生成實例

function User(){
    this.name = '無名'
}
User.getInstance = function(){
    if(!User._instance){
        User._instance = new User()
    }
    return User._instance
}

const u1 = User.getInstance()
const u2 = User.getInstance()

console.log(u1===u2);

方式3

使用閉包,改進方式2

function User() {
    this.name = '無名'
}
User.getInstance = (function () {
    var instance
    return function () {
        if (!instance) {
            instance = new User()
        }
        return instance
    }
})()

const u1 = User.getInstance()
const u2 = User.getInstance()

console.log(u1 === u2);

方式4

使用包裝對象結(jié)合閉包的形式實現(xiàn)

const User = (function () {
    function _user() {
        this.name = 'xm'
    }
    return function () {
        if (!_user.instance) {
            _user.instance = new _user()
        }
        return _user.instance
    }
})()

const u1 = new User()
const u2 = new User()

console.log(u1 === u2); // true

當然這里可以將閉包部分的代碼單獨封裝為一個函數(shù)

在頻繁使用到單例的情況下,推薦使用類似此方法的方案,當然內(nèi)部實現(xiàn)可以采用上述任意一種

function SingleWrapper(cons) {
    // 排除非函數(shù)與箭頭函數(shù)
    if (!(cons instanceof Function) || !cons.prototype) {
        throw new Error('不是合法的構(gòu)造函數(shù)')
    }
    var instance
    return function () {
        if (!instance) {
            instance = new cons()
        }
        return instance
    }
}

function User(){
    this.name = 'xm'
}
const SingleUser = SingleWrapper(User)
const u1 = new SingleUser()
const u2 = new SingleUser()
console.log(u1 === u2);

方式5

在構(gòu)造函數(shù)中利用new.target判斷是否使用new關(guān)鍵字

class User{
    constructor(){
        if(new.target !== User){
            return
        }
        if(!User._instance){
            this.name = 'xm'
            User._instance = this
        }
        return User._instance
    }
}

const u1 = new User()
const u2 = new User()
console.log(u1 === u2);

方式6

使用static靜態(tài)方法

class User {
    constructor() {
        this.name = 'xm'
    }
    static getInstance() {
        if (!User._instance) {
            User._instance = new User()
        }
        return User._instance
    }
}
const u1 = User.getInstance()
const u2 = User.getInstance()

console.log(u1 === u2);

“JS實現(xiàn)單例模式的方式有哪些”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!

當前標題:JS實現(xiàn)單例模式的方式有哪些
分享網(wǎng)址:http://aaarwkj.com/article8/gpgeip.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供域名注冊、網(wǎng)站收錄網(wǎng)站維護、網(wǎng)站改版、靜態(tài)網(wǎng)站、網(wǎng)站策劃

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁設(shè)計
久久国产精品必看狼人| 亚洲色图熟女激情另类| 18岁下禁止看的视频| 国产农村妇女一区二区三区 | 自由成熟性生活免费视频| av永久天堂一区二区三区| 91欧美日韩在线观看视频| 亚洲熟女少妇淫语高潮| 未满18禁止入内在线观看| 欧美曰韩国内精品中文| 欧美视频在线观看香蕉| 日韩一区二区高清看片| 九九在线视频免费观看精品视频| 色呦呦视频在线免费观看| 中文字幕一区精品日韩| 亚洲国产精品有码专区| 欧美日韩中文字幕精品| 国产午夜视频在线观看一区| 天天干天天干夜夜操| 在线精品91国产在线观看| 国产在线精品91系列| 日韩av天堂免费网站| av毛片天堂在线观看| 欧美一区二区三区日| 亚洲一区二区视频在线观看免费| 国产粉嫩美女一区二区三| 女性裸体无遮挡啪啪网站| 白浆熟女精品国产91| 午夜福利不卡片在线观看| 国产午夜福利视频合集| 黄色av网站在线免费| 国产麻豆91在线视频| 国产成人精品久久一区二区三区| 五月婷婷丁香花综合网| 俄罗斯少妇毛茸茸的高潮| 欧美成人精品三级在线网站| 99热这里只有精品中文| 热久久这里只有精品网址| 亚洲情色精品国产一区| 国产福利在线观看网站| 日韩黄色免费在线观看|