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

307
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
Метод для складывания цифр числа

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

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

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

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

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

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

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

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

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

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

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

289