Mastering javascript design patterns. (2014)