У меня есть блок кода, который возвращает имя и фамилию, имя и имя в зависимости от того, какую внутреннюю функцию вы используете. Однако при использовании этого ключевого слова firstname возвращает undefined, когда я обращаюсь к внутренней функции lastname или middlename. Если я не использую 'this', то firstname возвращает только штраф. Я не понимаю, почему это происходит. Может ли кто-нибудь объяснить, почему?Почему this.firstName возвращает undefined?
function celebrityName (firstName) {
var nameIntro = "This celebrity is ";
this.firstName = firstName;
return {
lastName: function(lastName){
this.lastName = lastName;
return nameIntro + this.firstName + ' ' + this.lastName + " (last name)";
},
middleName: function(middleName){
this.middleName = middleName;
return nameIntro + this.firstName + ' ' + this.middleName + " (middle name)";
}
}
}
var mjName = celebrityName ("Michael");
console.log(mjName.middleName("Jackson"));
Вот код без «этого» и отлично работает.
function celebrityName (firstName) {
var nameIntro = "This celebrity is ";
return {
lastName: function(lastName){
return nameIntro + firstName + ' ' + lastName + " (last name)";
},
middleName: function(middleName){
return nameIntro + firstName + ' ' + middleName + " (middle name)";
}
}
}
var mjName = celebrityName ("Michael");
console.log(mjName.middleName("Jackson"));
Спасибо за ответ, но, делая это lastName и middleName, теперь становятся неопределенными. – rachiebytes
@RachelAnnJohnson, это не должно. Убедитесь, что вы использовали 'celebrity.' во всех экземплярах сейчас (не только функцию« middleName », но также и« lastName »): [См. JsBin] (http://jsbin.com/zivavisina/edit?js , консоль) – Tom
Понял мою ошибку, спасибо за ответ, теперь имеет полный смысл! – rachiebytes