2012-12-20 92 views
1

我需要根據各種情況有選擇地運行幾個函數。我有這樣一個基本的目標:函數名稱作爲對象值

object = { 
    whatever : { 
    objects : null 
    }, 
    something : { 
    objects : // some object 
    } 
}; 

我需要通過對象的值進行迭代,如果objectsnot null,我需要運行特定的功能。如果whatever.objects不爲空,則需要運行whateverFunction();。如果something.objects不爲空,我需要運行somethingFunction();

for(i in object) 
{ 
    if (object[i].objects) 
    // run a certain function 
} 

根據對象中的值運行這些人爲命名的函數的最佳方法是什麼?我可以將「要運行的功能」的名稱存儲在對象中,但我想盡量避免評估。

創建一個類對象,每個類都有自己的函數可以運行,如果是的話,我該怎麼做呢?

回答

5
object = { 
    whatever : { 
    objects : null, 
    func : whateverFunction 
    }, 
    something : { 
    objects : // some object, 
    func : somethingFunction 
    } 
}; 

for (var i in object) { 
    if (object[i].objects) { 
    objects[i].func(); 
    } 
} 

功能本身,其可以被傳遞和存儲的對象。無需存儲該函數的名稱;存儲函數本身。

+2

僅供參考:函數本身就是對象,因此可以傳遞並存儲。所以,不需要存儲函數的名字;存儲函數本身。 (如果情況允許,就是這樣) – Matchu

+0

尼斯和封裝 – Phil

+1

@Matchu哈哈,我正在研究這個解釋,但你打敗了我。 –

1

如果whateverFunction()somethingFunction()是全球性的,嘗試這樣的事情

var funcName = 'somethingFunction'; 

window[funcName](); 
相關問題