有时候我们不希望外部访问私有变量,但希望外部可以来访问方法,我们通过模块模式来暴露相关的接口供外部调用,同时函数内部的私有变量外部又是访问不到的,从而实现了数据的封装,达到信息隐藏的目的。
接下来我们来看demo:
1 | var prison = (function(){ |
通过立即执行函数可以避免全局污染。
我们不能通过prison. prisonerName和prison. jailTerm来访问prison的变量(私有变量),因为私有变量的生命周期只存在立即执行函数的作用域内,但是我们可以通过访问prison.prisoner()和prison.setJailTerm()这两个对象方法(函数暴露的接口)来访问和修改变量值。