読者です 読者をやめる 読者になる 読者になる

変態記法 Sharp Variables

A sharp variable is a syntax in object initializers that allows serialization of objects that have cyclic references or multiple references to the same object.

#数字に代入することで、他のプロパティをリテラル内で参照できるらすぃ。

let hoge = ({obj: #1={neko: 'cat'}, meow: #1#.neko});

alert(hoge.meow); // 'cat'
alert(hoge.obj.neko); // 'cat'
// ({obj: {neko: 'cat'}, meow: 'cat'})

使えるパターン

let いらずですね!
(#1=alert, #1#('hoge'));
終わらない旅
let journey = #1={walk: #1#};
journey.walk.walk.walk.walk.walk.walk.walk.walk.walk.walk.walk.walk.walk.walk

参照は続くよどこまでも。

ダメなパターン

通常の変数ってわけではないので2行目でエラーになる。
({obj: #1={neko: 'cat'}, meow: #1#.neko})
({hoge: #1#})
これも、だめ
(#1=alert, function () (#1#()))()