2017-02-22 30 views
0

Я пытаюсь передать перечисление функции, но продолжаю получать «неопределенную» ошибку.Передача enum функции не работает

Если я пытаюсь это:

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

Вы передаете ** строку ** в функцию. Строки не имеют свойства 'second'. Передайте ** объект ** вместо: '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 означает, что вы пытаетесь получить доступ к к second свойства myEnum referrenced объекта, который не является, как вы использовали кавычки ' вокруг

использование

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

Посетители смогут узнать больше, если вы * объясните * свое решение и проблему, которую имеет OP. Пожалуйста, объясните, какие изменения вы внесли и почему вы их сделали. –

+0

уверен, что я хочу, просто вопрос быстро ответить –

+0

Спасибо. Если бы я почесывал голову целую вечность ... – radders