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

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è)計
日本顶级片一区二区三区| 夜夜草av一区二区三区| 日本黄色美女日本黄色| 手机在线看国产后入| 亚洲风情亚av在线播放| 成人一区二区三区播放| 自拍偷拍欧美日韩第一页| 首页亚洲一区二区三区| 欧美一区二区三区高清正版| 亚洲欧洲中文字幕一区二区| 欧美一区二区三区一级| 日韩精品一区二区91| 毛片一区二区三区免费看| 黄色一级日本黄色一级| 人妖激情一区二区三区| 日韩一区二区三区高清免费视频成人| 亚洲欧洲av男人的天堂| 成人高清乱码一区二区三区| 亚洲日本精品一区二区三区| 国产一区国产二区中文字幕| 国产传媒视频网站在线观看| 日韩视频一区二区三区四区| 亚洲男人天堂黄色av| 最新日本免费久久精品| 大香蕉欧美日韩在线视频| 在线欧美日韩一区二区三区| 欧美高清成人一区二区三区| 下载一个日韩暴力黄色录像| 免费看欧美黄片在线看| 一区二区三区国产激情| 亚洲国产日韩精品自拍av| 在线观看免费国产不卡| 国产免费一级av剧情| 2018在线不卡爱视频| 欧美日韩午夜福利视频| 91精品超碰人人在线公开| 最新国产成人免费在线视频| 亚洲毛片在线免费播放| 精品在欧美一区二区少妇| 日本熟妇一区二区三区高清视频 | 男女互射视频在线观看|