簡體   English   中英

JavaScript動態函數名稱

[英]JavaScript dynamic function name

我需要將函數名稱動態分配給關聯數組的元素。 這是我的嘗試,不起作用。 我要尋求幫助的問題是在這里嘗試調用該函數: cr['cmd1'](x) ;

<!DOCTYPE html>

<html>
<head>
    <script type="text/javascript">
        var cr =[];
        var x = 5;
        cr['cmd1'] ='foo';
        var msg = cr['cmd1'](x);  
        alert(msg);

        function foo(y){
            return y;
        }
    </script>
</head>
<body>
</body>
</html>

編輯:我在這里傳遞了一個字符串cr['cmd1'] ='foo'; 我無法控制的 這就是為什么我必須使用字符串作為外部應用程序的起點。

如果要將其存儲為函數,請直接傳遞該函數。 否則,如果您只想將其存儲為字符串,則可以使用引號。

更改:

cr['cmd1'] ='foo';

至:

cr['cmd1'] = foo;

使用此語法window[function_name]('para1');訪問函數。 window[function_name]('para1');

您的用法將是這樣的

var msg = window[cr['cmd1']](x);

我將使用window []並在嘗試執行之前確保其功能,因為您無法控制傳遞的內容。

var f = window[cr['cmd1']];
if(typeof f==='function') {
  f(x);
}

您在此處所做的就是將函數分配給數組。 您可能要嘗試做的更常見的模式是使用數組表示法在對象上調用函數。

    <script type="text/javascript">
        var cr = {};
        cr.cmd1 = function foo(y){
            return y;
        };
        var x = 5;
        var msg = cr['cmd1'](x);  
        alert(msg);
    </script>

此代碼將導致一個包含數字5的警報框。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM