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 -

performance - Why is XCHG reg, reg a 3 micro-op instruction on modern Intel architectures? -

jquery - Responsive Navbar with Sub Navbar -