2017-02-22 129 views
0

我想通過一個枚舉函數,但不斷收到'未定義'的錯誤。傳遞枚舉函數不起作用

如果我試試這個:

var myVar = new myFunc('{ first:1, second:2 }') 

然後

function myFunc(enum) { 
    var myEnum = enum; 
    } 

我發現myEnum被定義爲{ first:1, second:2 }myEnum.second是不確定的。

如果我將相同的值直接硬編碼到myEnum =中,它就可以工作。

我也試着把大括號放在myEnum =行上,但沒有改變。

我在做什麼錯?我只是通過一個字符串myEnum

如果是這樣,我怎麼能確保myEnum確實是一個枚舉?

+2

您正在向函數傳遞一個**字符串**。字符串不具有「第二」屬性。代替傳遞**對象**:'myFunc({first:1,second:2})'。您可以在http://eloquentjavascript.net/04_data.html中瞭解更多關於對象的知識。 (JavaScript沒有「枚舉」)。 –

+0

'enum'是javascript中的保留字。 – Agalo

+0

雖然我懷疑你只是在玩弄這個,但應該注意的是,在函數中使用'new'專門用於創建對象實例。如果你只需要一個靜態對象來保存枚舉,只需寫:'var myEnums = {first:1,second:2}',你仍然可以在其他任何你喜歡的地方傳遞myEnums。 –

回答

1

這裏你正在使用的字符串作爲你界內的對象引號'

var myVar = new myFunc('{ first:1, second:2 }')

myEnum.second意味着你試圖訪問myEnum referrenced對象,這是不是對的second屬性,如您已經使用引號'各地

使用

var myVar = new myFunc({ first:1, second:2 }) 
+1

如果你解釋你的解決方案和OP的問題,訪問者將能夠學到更多。請解釋你做了哪些改變以及爲什麼改變了它們。 –

+0

當然我會,只是快速的回答問題 –

+0

謝謝。如果我搔着我的頭,好幾年了.... – radders