2014-02-27 26 views
0

您好我看到這行代碼如何定義一個實例在JavaScript

CtvDfpAd.GetInstance = function() { 
    if (!CtvDfpAd.__instance) { 
     CtvDfpAd.__instance = new CtvDfpAd(); 
    } 

    return CtvDfpAd.__instance; 
}; 

是「實例」在JavaScript中的關鍵詞?我在網上搜索,我不相信它,有人可以解釋嗎?

感謝

+2

'__instance'是CtvDfpAd上的一個屬性。 –

+0

耶穌!我想我找到了一個新的關鍵字!大聲笑。 +1讓我笑;) – leaf

回答

3

不,__instance不是關鍵字。由於JavaScript沒有私有變量的概念,所以雙下劃線前綴似乎是將成員變量視爲私有的慣例。

此代碼是JavaScript中Singleton模式的實現。單例類意味着它被設計爲在程序的整個生命週期中只有一個實例。該函數檢查實例是否存在 - 如果存在,則返回該實例。否則,它創建一個並返回新實例。

+0

'______ suchacoolnameforaproperty'也有效@doglin :) – leaf

1

instanceof是在JavaScript中的關鍵字。除此之外,它是面向對象編程中的一個技術術語。您發佈的代碼使用常見模式來實例化對象

1

看起來實例只是該CtvDfpAd對象的受保護屬性。看起來它可能基於該模式的單展示位置:

http://addyosmani.com/resources/essentialjsdesignpatterns/book/#singletonpatternjavascript

你幾乎肯定會得到一個什麼樣的代碼是通過閱讀這篇文章做一個更好的主意,但總之,這是什麼碼正在做:

  • 如果已經有一個我們的單例的實例,返回它。
  • 否則創建此對象的新實例並返回該實例。
相關問題