2017-02-22 154 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