闭包机制
闭包机制模型代码:
说明
在构造函数里定义了私有成员,公共属性,还有方法,这要可以模拟保护私有成员。
闭包
所谓闭包
就是在构造函数体内定义另外的函数作为目标对象的方法函数,而这个对象的方法函数反过来引用外层函数体中的临时变量。这使得只要目标对象在生存期内始终能保持其方法,就能简介的保持原构造函数体当时用到的临时变量值。尽管最开始的构造函数调用已经结束,临时变量的名称也消失了,但是目标对象的该方法却一直能够引用到该变量的值,而且该变量的名称只能通过这种方法来访问,及时再次调用相同的构造函数,只会生成新的方法,和上次的完全独立。
——摘录《悟透javaScript》一书的解释
缺点
这种间接保持变量值的机制,会给javaScript的垃圾回收机制制造难题,特别是在对象间复杂的循环引用时,这会对垃圾回收造成很大的麻烦。
收获
这种方式可以保护对象的私有变量,这个变量虽然构造方法已经调用完毕,但是还是能访问到,通过内部方法访问,并且只能通过该方法访问。