国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

JavaScript設(shè)計(jì)模式之單例模式

lk20150415 / 3060人閱讀

摘要:原文博客地址單例模式系統(tǒng)中被唯一使用,一個(gè)類只有一個(gè)實(shí)例。中的單例模式利用閉包實(shí)現(xiàn)了私有變量兩者是否相等弱類型,沒有私有方法,使用者還是可以直接一個(gè),也會(huì)有方法分割線不是單例最簡單的單例模式,就是對象。

原文博客地址:https://finget.github.io/2018/11/06/single/
單例模式
系統(tǒng)中被唯一使用,一個(gè)類只有一個(gè)實(shí)例。實(shí)現(xiàn)方法一般是先判斷實(shí)例是否存在,如果存在就返回,不存在就創(chuàng)建再返回。
在JavaScript里,單例作為空間提供者,從全局命名空間里提供一個(gè)唯一的訪問點(diǎn)來訪問該對象。

模式作用:

模塊間通信

系統(tǒng)中某個(gè)類的對象只能存在一個(gè)

保護(hù)自己的屬性和方法

注意事項(xiàng):

注意this的使用

閉包容易造成內(nèi)存泄漏,不需要的趕快干掉

注意new的成本

代碼示例

java中的單例模式

java請類型可以私有化,外部new就會(huì)報(bào)錯(cuò)。

JavaScript中的單例模式

class SingleObject {
  login() {
    console.log("login")
  }
}
// 利用閉包實(shí)現(xiàn)了私有變量
SingleObject.getInstance = (fucntion () {
  let instance
  return function () {
    if (!instance) {
      instance = new SingleObject()
    }
    return instance
  }
})()

let obj1 = SingleObject.getInstance()
obj1.login()
let obj2 = SingleObject.getInstance()
obj2.login()
// 兩者是否相等
console.log(obj1 === obj2)


// js弱類型,沒有私有方法,使用者還是可以直接new 一個(gè) SingleObject,也會(huì)有 login方法
console.log("------------分割線------------")
let obj3 = new SingleObject()
obj3.login()
console.log("obj1===obj3",obj1 === obj3) // false 不是單例
最簡單的單例模式,就是對象。在 JavaScript 中 定義一個(gè)對象(Object),那么它的屬性,就只能通過它自己調(diào)用。就算兩個(gè)不同的對象,有相同的屬性名,也不能相互調(diào)用,保護(hù)了自己屬性。

登錄框 單例

class LoginForm {
  constructor() {
    this.state = "hide"
  }
  show() {
    if (this.state === "show") {
      alert("已經(jīng)顯示")
      return
    }
    this.state = "show"
    console.log("登錄框已顯示")
  }
  hide() {
    if (this.state === "hide") {
      alert("已經(jīng)隱藏")
      return
    }
    this.state = "hide"
    console.log("登錄框已隱藏")
  }
}
LoginForm.getInstance = (function () {
  let instance
  return function () {
    if (!instance) {
      instance = new LoginForm();
    }
    return instance
  }
})()

// 一個(gè)頁面中調(diào)用登錄框
let login1 = LoginForm.getInstance()
login1.show()
// login1.hide()

// 另一個(gè)頁面中調(diào)用登錄框
let login2 = LoginForm.getInstance()
login2.show()

// 兩者是否相等
console.log("login1 === login2", login1 === login2)
最后

創(chuàng)建了一個(gè)前端學(xué)習(xí)交流群,感興趣的朋友,一起來嗨呀!

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

轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/99539.html

相關(guān)文章

  • javascript設(shè)計(jì)模式學(xué)習(xí)筆記單例模式

    摘要:單例模式單例模式就是保證一個(gè)類僅有一個(gè)實(shí)例并提供一個(gè)訪問它的全局訪問點(diǎn)其最大的特點(diǎn)就是永遠(yuǎn)只返回一個(gè)實(shí)例實(shí)例通過來獲取類的唯一對象其缺點(diǎn)也明顯增加了類的不透明性透明的單例模式最終會(huì)被返回使用代理實(shí)現(xiàn)單例模式將負(fù)責(zé)管理單例的邏輯移到了代理類中 單例模式 單例模式 就是保證一個(gè)類僅有一個(gè)實(shí)例, 并提供一個(gè)訪問它的全局訪問點(diǎn). 其最大的特點(diǎn)就是 永遠(yuǎn)只返回一個(gè)實(shí)例 var Sin...

    xiaolinbang 評論0 收藏0
  • javascript設(shè)計(jì)模式與開發(fā)實(shí)踐全書深度解析(一)單例模式

    摘要:所以程序在引入文件的時(shí)候用了單例模式,一個(gè)文件實(shí)例化一次,這種做法無疑是好的,但是也容易引起。在我們平時(shí)的開發(fā)過程中,可以借鑒這兩種方式去緩存變量,節(jié)點(diǎn)等。 這一章作者講了一個(gè)例子,就是在用單例模式生成一個(gè)dom節(jié)點(diǎn),還要做到只有訪問的時(shí)候才創(chuàng)建,后續(xù)訪問直接用前面創(chuàng)建的。那么實(shí)際開發(fā)中我們會(huì)用到這個(gè)模式嗎?現(xiàn)在我們基本都是用vue,react,angular開發(fā),不太會(huì)直接去操作do...

    xioqua 評論0 收藏0
  • 每天一個(gè)設(shè)計(jì)模式單例模式

    摘要:博主按每天一個(gè)設(shè)計(jì)模式旨在初步領(lǐng)會(huì)設(shè)計(jì)模式的精髓,目前采用靠這吃飯和純粹喜歡兩種語言實(shí)現(xiàn)。單例模式用途如果一個(gè)類負(fù)責(zé)連接數(shù)據(jù)庫的線程池日志記錄邏輯等等,此時(shí)需要單例模式來保證對象不被重復(fù)創(chuàng)建,以達(dá)到降低開銷的目的。 博主按:《每天一個(gè)設(shè)計(jì)模式》旨在初步領(lǐng)會(huì)設(shè)計(jì)模式的精髓,目前采用javascript(_靠這吃飯_)和python(_純粹喜歡_)兩種語言實(shí)現(xiàn)。誠然,每種設(shè)計(jì)模式都有多種實(shí)...

    yy736044583 評論0 收藏0
  • 每天一個(gè)設(shè)計(jì)模式單例模式

    摘要:博主按每天一個(gè)設(shè)計(jì)模式旨在初步領(lǐng)會(huì)設(shè)計(jì)模式的精髓,目前采用靠這吃飯和純粹喜歡兩種語言實(shí)現(xiàn)。單例模式用途如果一個(gè)類負(fù)責(zé)連接數(shù)據(jù)庫的線程池日志記錄邏輯等等,此時(shí)需要單例模式來保證對象不被重復(fù)創(chuàng)建,以達(dá)到降低開銷的目的。 博主按:《每天一個(gè)設(shè)計(jì)模式》旨在初步領(lǐng)會(huì)設(shè)計(jì)模式的精髓,目前采用javascript(_靠這吃飯_)和python(_純粹喜歡_)兩種語言實(shí)現(xiàn)。誠然,每種設(shè)計(jì)模式都有多種實(shí)...

    lijy91 評論0 收藏0
  • JavaScript設(shè)計(jì)模式與開發(fā)實(shí)踐系列單例模式

    摘要:本系列為設(shè)計(jì)模式與開發(fā)實(shí)踐作者曾探學(xué)習(xí)總結(jié),如想深入了解,請支持作者原版單例模式實(shí)現(xiàn)單例模式單例模式的定義是保證一個(gè)類僅有一個(gè)實(shí)例,并提供一個(gè)訪問它的全局訪問點(diǎn)。 本系列為《JavaScript設(shè)計(jì)模式與開發(fā)實(shí)踐》(作者:曾探)學(xué)習(xí)總結(jié),如想深入了解,請支持作者原版 單例模式 實(shí)現(xiàn)單例模式 單例模式的定義是:保證一個(gè)類僅有一個(gè)實(shí)例,并提供一個(gè)訪問它的全局訪問點(diǎn)。單例模式是一種常用的模式...

    Airy 評論0 收藏0

發(fā)表評論

0條評論

最新活動(dòng)
閱讀需要支付1元查看
<