Круговой конст, пусть объявление для графа ... как исправить? - PullRequest
0 голосов
/ 02 февраля 2019

ОК, заморозка мозга ... Мне нужна помощь, чтобы сделать эту работу:

const a = {
  val: 'a',
  neighbor: d
}

const b = {
  val: 'b',
  neighbor: a
}

const c = {
  val: 'c',
  neighbor: b
}

const d = {
  val: 'd',
  neighbor: c
}

console.log('d: neighbor - > ', d.neighbor)
console.log('a: neighbor - > ', a.neighbor)

const a должен указывать на const d , но, к сожалению, const d определяется после const a .В большинстве случаев я могу переместить const a, который будет определен после const d , но в этом случае const d необходимо определить после const c .Что мне не хватает ....?Спасибо

Ответы [ 2 ]

0 голосов
/ 02 февраля 2019

Вы можете определить neighbor свойства как получатели. getter на самом деле является функцией, которая выполняется, когда вы извлекаете значение объекта, то есть в этот момент все упомянутые объекты уже определены.Таким образом, вы также можете защитить свойство neighbor от случайных изменений.

const a = {
    val: 'a',
    get neighbor () {return d;}
};
const b = {
    val: 'b',
    get neighbor () {return a;}
};
const c = {
    val: 'c',
    get neighbor () {return b;}
};
const d = {
    val: 'd',
    get neighbor () {return c;}
};

console.log('d: neighbor - > ' , d.neighbor);
console.log('a: neighbor - > ' , a.neighbor);
0 голосов
/ 02 февраля 2019

Объявите все объекты без свойство "сосед", а затем добавьте его позже в отдельных присваиваниях.

const a = {
    val: 'a'
}

const b = {
    val: 'b'
}


const c = {
    val: 'c'
}

const d = {
    val: 'd'
}

a.neighbor = d;
b.neighbor = a;
c.neighbor = b;
d.neighbor = c;
...