Metaprogramming is an art. It is an art often used by ninjas to conceal some of their swift and masterful sword strokes.

A mastery over metaprogramming can help each one of us write better code, both materially and spiritually. In this talk, we embark on a journey that will unravel some of the techniques of metaprogramming and specifically how to metaprogram with ES6’s new Symbols, Proxies and Reflect features.

https://jsfoo.talkfunnel.com/2015/13-metaprogramming-a-journey-into-es6