2016-04-21 5 views
0

Я пытался установить fullname свойство объекта person с использованием this, но получил неопределенный при выводе полного имени.Получение неопределенного значения свойства объекта объекта, используя это в javascript

var person = { 
    name:'yask', 
    fullname: this.name + ' Srivastava' 
} 

console.log(person.fullname); 

Это странно, как использование this при использовании внутри функции относится к объекту. Здесь, похоже, это время называется глобальный объект. (Окно может быть ..?)

+4

Вы не можете ссылаться на объект внутри себя с помощью 'this'. 'this' является функцией области. – adeneo

+0

Обратите внимание, что вы еще не создали объект, поэтому 'this' ссылается на область действия, в которой вы сейчас создаете объект. –

+0

@ Mike'Pomax'Kamermans, используя это внутри функции .. тогда и мы Еще не построил объект, но он все еще работает? – yask

ответ

1

Вы можете сделать это с использованием getter,

var person = { 
    name:'yask', 
    get fullname(){ return this.name + ' Srivastava' } 
} 

console.log(person.fullname); 

В основном this в вашем случае будет указывать контекст лексическая область функция объекта, а не сам объект.

+1

Обратите внимание, что только в ES6, и если вы идете по этой дороге, вы может также структурировать ваш код немного лучше с помощью определения или класса реального объекта и создания экземпляра этого –

+0

У меня возникли проблемы с пониманием 'В основном это в вашем случае будет указывать на контекст лексической области функцию объекта, а не сам объект. Не могли бы вы объяснить это? – yask

+0

@yask Используемый вами 'this' будет равен' this' принадлежит области, в которой находится объект. 'function test() {var self = this; var obj = {a: this}; console.log (self == obj.a); // true} ' –

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