01.
var
myApplication=
function
(){
02.
var
name=
'Chris'
;
03.
var
age=
'34'
;
04.
var
status=
'single'
;
05.
return
{
06.
createMember:
function
(){
07.
//[...]
08.
},
09.
getMemberDetails:
function
(){
10.
//[...]
11.
}
12.
}
13.
}();
14.
//myApplication.createMember()和
15.
//myApplication.getMemberDetails()就可以使用了。
这被称作 module 模式或 singleton。Douglas Crockford 多次谈到过这些,Yahoo UserInterface Library YUI里对此有大量的使用。但这样一来让我感到不便的是,我需要改变句式来使函数和变量能被外界访问。更甚者,调用时我还需要加上myApplication这个前缀。所以,我不喜欢这样做,我更愿意简单的把需要能被外界访问的元素的指针导出来。这样做后,反倒简化了外界调用的写法:
01.
var
myApplication=
function
(){
02.
var
name=
'Chris'
;
03.
var
age=
'34'
;
04.
var
status=
'single'
;
05.
function
createMember(){
06.
//[...]
07.
}
08.
function
getMemberDetails(){
09.
//[...]
10.
}
11.
return
{
12.
create:createMember,
13.
get:getMemberDetails
14.
}
15.
}();
16.
//现在写成myApplication.get()和
17.
//myApplication.create()就行了。
我把这个称作 “revealing module pattern.”