2
A
回答
1
您可以用方括號使用對象的屬性名稱字符串標識符的一些有用的功能:
obj['identifier'] === obj.identifier
然而,唯一的情境中,你可以作爲對象屬性的訪問變量用於全局變量,因爲它們作爲全局屬性(瀏覽器中的窗口)添加爲對象:
var global = this;
var name = 'fred';
alert(global['name']); // fred
您不能訪問任何其他執行上下文的變量對象,但你可以使用EVAL評估字符串:
alert(eval('name'))
但強烈建議反對。使用對象屬性而不是方括號表示法。
0
如果您正在考慮使用用戶輸入來選擇要應用的函數,某些用戶可能會發現該函數(*)的使用方式令人厭惡,並且將函數指定爲哈希值可能更安全如下:
(*)再次,訪客可以隨意編輯他們收到的JavaScript網站的副本,所以這可能是沒有實際意義的。
function rotate(){
rotate an image;
}
function resize(){
resize an image;
}
operations = { 'rotate': rotate, 'resize': resize };
...
try {
(operations[userChoice])();
} catch(e){ console.log(e); } // or maybe tell the user there is no such function
請注意,如何使用操作對象限制了userChoice可以調用的內容。
0
我知道這不完全是你問的,但在某些情況下它可能是更好的選擇。
除了使用函數的名稱作爲字符串外,還可以直接處理對函數本身的引用。
這將是這樣的:
function func() { // normal function definition
}
var func2 = function() {}; // anonymous function
var function_to_use = func; // works with normal functions
function_to_use();
function_to_use = func2; // as well as anonymous ones
function_to_use();
相關問題
- 1. 我可以使用空字符串作爲對象標識符嗎?
- 2. 我可以將字符串傳遞給函數嗎?
- 3. 我可以將Unicode字符串轉儲爲字節數組嗎?
- 4. 冒號可以用作標識符嗎?
- 5. 我可以將字符符號轉換爲字符串
- 6. scanf可以識別字符串中的格式字符嗎?
- 7. 製作C標識符和字符串?
- 8. JPA:我可以使用@Column(precision =)作爲字符串值嗎?
- 9. 我可以使用scanf作爲字符串嗎?
- 10. 我可以使用v字符串作爲IPv4地址嗎?
- 11. 我可以使用字符串作爲QComboBox中的索引嗎?
- 12. VTD-XML可以將字符串作爲輸入嗎?
- 13. 我們可以將字符串保存爲OpenTSDB中的值嗎?
- 14. 標識符不能爲空字符串
- 15. 我可以複製空字符串中的字符串嗎?
- 16. 將非序列標識符作爲數據庫中表的主鍵可以嗎?
- 17. 我可以使用解壓將字符串拆分爲Perl中的字符嗎?
- 18. 我們可以設置字符串嗎?
- 19. 我可以在SQL中用作內部標識符嗎?
- 20. 可以將一次性密碼用作標識符嗎?
- 21. 可以將「with」用作Python中的標識符嗎?
- 22. 將字符串作爲參數傳遞給目標函數c
- 23. 可以使用identifierforvendor作爲標識符嗎?
- 24. TextEncoding可以轉換爲字符串嗎?
- 25. 我可以調用一個函數的參數和標識符嗎?
- 26. 你可以將字符串分解爲C中的一個字符數組嗎?
- 27. 我可以使用asm函數而不是以字符串文字作爲參數的c-string變量嗎?
- 28. 在Perl中,我可以將字符串視爲字節數組嗎?
- 29. java:我可以將字符串轉換爲字節數組,沒有BOM嗎?
- 30. 我可以將字符串傳遞給Zend sql的order函數嗎?
如果是在窗口範圍,你可以做'窗口[了funcName()'。 – elclanrs
如果你附加它來說窗口,例如,你可以說'window.func = function(){};'然後'窗口['func']();'但我不會推薦它。你試圖解決的實際問題是什麼? – asawyer