javascript patterns by stoyan