2013-11-26 29 views
0

這裏有一個奇怪的問題呃... 我想更好地瞭解一般的JS代碼是如何爲Web應用程序構建的。這行代碼是什麼? (構建/設計一個JS Web應用程序)

我經常看到這樣的行代碼開始(但現在由於某種原因,我無法找到一個真實的例子):

var SOME = SOME || {} 

或類似的東西。我現在是模糊的,但我我肯定是somehwat常見的模式,如果你的某個人習慣了網絡應用程序將認出它..

我的問題是:我很確定,代碼行開始某種模式。你知道嗎?你能告訴我什麼是模式?

回答

3

基本上

var SOME = SOME || {}

裝置設定本地SOME(即無功SOME)以指向命名SOME(即= SOME)現有的全局變量,如果它不是NULL。如果全球一些是NULL,則設置當地一些人的新對象{}

這是說

var SOME = {}; 

if (window.SOME != NULL) { 
    SOME = window.SOME 
} 

編輯的快捷方式:

OK,經常與模塊工作時,這種模式被使用。例如

Foo.js

window.appModule = {}; 

Bar.js

var appModule = appModule || {}; 

    appModule.newFunction = function() { //.... Whatever. }; 

    window.appModule = appModule; 

基本上,我們希望使用現有的AppModule實例,或創建一個新的,如果它還不存在。這裏我們通過向它添加一個新的函數來擴展現有的模塊實例。所以真的,這種模式只是確保創建對象的實例(如果它尚不存在)的方便方法。

真的不是一個主要的模式,只是一個方便的捷徑。

編輯:

發現這個例子剛纔:

var MODULE = (function (my) { 
    // add capabilities... 

    return my; 
}(MODULE || {})); 

通知在底部使用的模式。再說一次,這是一種方便的方式,可以說使用現有的MODULE或新的另一個對我來說,然後將其傳遞到function (my)

+0

好的,我知道它做了什麼。但是我的問題稍有不同:你是否認識到它通常用於構建Web應用程序代碼塊(可能是模塊?)? – Stratboy

+0

謝謝。根據另一個未來讀者的例子,看看這個經典:[https://github.com/tastejs/todomvc/tree/gh-pages/architecture-examples/backbone]每個js文件都以'var app = app開頭|| {};' – Stratboy

1

避免SOME爲空。

這是shortcircuiting。基本上,如果SOME爲NULL,它將變爲{},所以初始化很好。

var myVar = valueThatCouldBeNull || WhateverIWantToInitInSaidCase 

JSFiddle example