2014-09-30 2 views
-4

Я изучаю Javascript, и я нашел проблему. Я должен определить конструктор с учетом некоторых параметров. Я вставляю их, но я хотел вставить if, чтобы проверить, когда пользователь ничего не вставляет. Я работаю с паразитической моделью Inheritance, но я не знаю, как вставить этот случай. Вот часть моего конструктора:Назначение значений по умолчанию для параметров

function user(_id, userName, email, password, firstName, lastName, date_created, playlists) { 

if (firstName === 'undefined') { 
    firstName = userName; 

} 
if (lastName === 'undefined') { 
    lastName = userName; 
} 
return { 
    _id: _id, 
    userName: userName, 
    email: email, 
    password: password, 
    firstName: firstName, 
    lastName: lastName, 
    date_created: new Date(), 
    playlists: [] 

}; 
} 

Предположим, что пользователь не использует firstName и LastName. Он вернется не определен. Но я хочу сохранить значение по умолчанию. Как мне это сделать?

+0

Вы можете поместить логику 'if' между объявлением функции и оператором' return'. Фактически, вы не должны помещать свою логику в другое место (после того, как 'return' он не будет выполнен) – SJuan76

+0

возможный дубликат [Установить значение параметра по умолчанию для функции JavaScript] (http://stackoverflow.com/questions/894860/set-a-default-parameter-value-for-a-javascript-function) –

+0

Я бы подумал, что вы могли бы использовать что-то вроде: 'firstName: (firstName! = null)? firstName: 'default value'' –

ответ

3

Прежде всего, если это конструктор, вы должны написать это:

function User(_id, userName, email, password, firstName, lastName, date_created, playlists) { 
    this._id = _id; 
    this.userName = userName; 
    this.email = email; 
    this.password = password; 
    this.firstName = firstName; 
    this.lastName = lastName; 
    this.date_created = date_created, 
    this.playlists = playlists 
} 

Таким образом, вы можете вызвать его с помощью ключевого слова new получить новый объект с соответствующими значениями, заданными.

Далее, чтобы установить значения по умолчанию, вы можете сделать короткий перерыв, используя || для каждого свойства. Таким образом, значение по умолчанию используется только тогда, когда значение не указано.

function User(_id, userName, email, password, firstName, lastName, date_created, playlists) { 
    this._id = _id; 
    this.userName = userName; 
    this.email = email; 
    this.password = password; 
    this.firstName = firstName || "defaultValue"; 
    this.lastName = lastName || "defaultValue"; 
    this.date_created = date_created || new Date(), 
    this.playlists = playlists || [] 
} 
+0

Хорошо. Это паразитическое наследование, верно? – pp94

+0

Хорошо, но если у меня есть значение по умолчанию, я хочу вставить «William» и «Barbosa», как я могу это сделать с вашей реализацией? – pp94

+0

Если пользователь предоставляет имена при вызове функции, используется указанное значение. Если пользователь не добавляет значения, используется значение «DefaultValue». 'new User (1,« willkuns »,« [email protected] »,« asd »,« William »)' будет устанавливать имя «William» и фамилию «defaultValue», потому что только первое имя был предоставлен. –

Смежные вопросы