Я изучаю Javascript, и я сталкивался с чем-то, чего не понимаю. Это часть моего объектного кода:Почему я не могу присвоить значение свойства следующему свойству в объявлении объекта?
var monster =
{
...
//is the animation starting?
hiding: true,
delayDuration: Math.floor(Math.random() * 60),
currentDelay: this.delayDuration,
...
};
Если я console.log (delayDuration) Я получаю значение, но если я console.log (currentDelay) он говорит, что «не определено».
Я не понимаю, почему currentDelay не принимает значение delayDuration. Может кто-нибудь объяснить это?
изменить: @Bergi, почему вы отметили это как дубликат? Я не мог найти свой вопрос в другом месте edit2: yup, это дубликат. По крайней мере, теперь я знаю слова, о которых я спрашивал.
'this' не существует в этот момент в качестве объекта, который вы создаете (по коррекции апографа Берги). Я всегда нашел [это объяснение] (http://www.adequatelygood.com/JavaScript-Module-Pattern-In-Depth.html), чтобы быть очень полезным. –
Поскольку this.delayDuration, вероятно, не существует. «this» не относится к объекту монстра, он ссылается на контекст, в котором работает код, и он, вероятно, не имеет свойства delayDuration. Это не является особенностью javascript «this», такой код не будет работать, например, на C#. – svinja
@JeremyMiller: Всегда существует 'this'. Только он не указывает на объект (который еще не существует) – Bergi