2016-06-26 66 views
-1

調用當我通過一個變量名我不斷收到爲什麼我的方法不被變量名

TypeError: window[$hello] is not a function 

我在堆棧溢出已經閱讀其他張貼關於這調用一個方法,但它似乎沒有正在處理我的代碼。我不確定我在這裏做錯了什麼。

如果有人能幫助我,我會非常感激。以下是我的代碼!謝謝!

function Actions(){ 



    function hello(){ 

     alert("hello world"); 


    } 


    (function(){ 

     $(document).on("change",".item-actions",function(){ 

      var $hello = "hello"; 

     window[$hello](); 


     }); 




    })(); 




} 

回答

2

hello()功能是本地Actions()功能,因此它不會是window對象上可見。只有全局功能在window

您可以使用自己的對象有同樣的效果:

function Actions(){ 

    var functions = { 
     hello: function hello(){ 
      alert("hello world"); 
     }, 
     // more ... 
    }; 


    (function(){ 

     $(document).on("change",".item-actions",function(){ 

      var $hello = "hello"; 

      functions[$hello](); 
     }); 
    })(); 
} 
+0

謝謝尖尖!現在我明白它是如何工作的! – json2021

+0

快速的問題。如何創建回調而不是直接在對象中寫入。 示例。你好:函數hello(){ alert(「hello world」); }, 怎麼我有這樣打招呼:「你好」 其中你好()將在「查找」對象分別定義 – json2021

+0

@ json2021那麼該屬性值可以是函數定義爲在我的例子,也可以是對其他函數的引用 - 在其他地方聲明的函數或參數或其他。我不是100%確定的,但我知道你在問什麼;你總是可以問一個新的問題! – Pointy

相關問題