javascript - How to define a recursive object with a single expression? -


for example, given object:

let foo = {foo:1}; let bar = {a:foo,b:foo}; 

we can define bar single expression writing as:

let bar = (($0)=>({a:$0={foo:1},b:$0}))() 

however, given object:

let o = {a:'perfect'}; o.circle = o; 

is possible recreate structure of o single expression?


this won't work:

(($0)=>($0={a:"perfect",circle:$0}))() 

because circle nested , $0 has been defined yet.

unless want solve getter properties, assignment unavoidable.

there kinds of ways that, within single expression:

let o = (o = {a:'perfect'}).circle = o; 

but recommend focus on clarity , use iife instead:

const o = (function(){     const x = {a:'perfect'};     x.circle = x;     return x; }()); // more first solution without mutable `o` variable: const o = (x => x.circle = x)({a:'perfect'}); 

Comments

Popular posts from this blog

Is there a better way to structure post methods in Class Based Views -

reflection - How to access the object-members of an object declaration in kotlin -

php - Doctrine Query Builder Error on Join: [Syntax Error] line 0, col 87: Error: Expected Literal, got 'JOIN' -