Есть способ реализовать такое?

274
22 июня 2017, 07:02

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

obj = {
    a: [1, 2, 3],
    b: this.a.concat([4, 5, 6])
}

Получаю ошибку:

TypeError: this.a is undefined

Нельзя как-нибудь это обойти?

Answer 1

obj = { 
    a: [1, 2, 3],         
    b: function() {  
      return this.a.concat([4, 5, 6]); 
    } 
} 
 
console.log(obj.b());

Но, кмк, это не лучший вариант и вообще лучше не искать способ обойти, а сделать сразу по уму. Иначе из костылей потом будет корабль собран, который потонет через N-ное время.

Answer 2

Eсли только так, не очень красиво, но

obj = { 
    a: [1, 2, 3] 
} 
obj['b'] = obj['a'].concat([4, 5, 6]); 
 
console.log(obj);

READ ALSO
Метод для складывания цифр числа

Метод для складывания цифр числа

Если ли метод для складывания цифр числа?

271
функция fetch повторно не отправляет запрос

функция fetch повторно не отправляет запрос

Помогите, пожалуйста, с такой проблемойПытаюсь отправить кроссдоменный запрос c помощью fetch API

358
не работают несколько запросов

не работают несколько запросов

Как синхронизировать несколько запросов?

198
Некорректно отрабатывает скрипт

Некорректно отрабатывает скрипт

На сайте sticky меню при скроле не открываетсяИзначально стиль display: none; при клике вижу в инспекторе, что срабатывает display: block;, но буквально сразу...

250