我们可以使用函数和闭包来构造模块。可以摒弃全局变量的使用,从而缓解js的糟糕特性-全局变量污染。
模块模式可以用来产生安全的对象。假定我们想要构造一个用来产生序列号的对象。

serial_maker包含的方法都没用到this或that。因此没有办法损害它。除了调用它里面的方法,否则没法改变prefix或seq的值 。
如果我们把gensym作为一个值传递给第三方函数,那个函数能用它产生唯一字符串,但却不能通过它来改变prefix或seq的值。