初始化模式,简单说,就是在不污染全局命名空间的情况下,使用临时变量,以一种更整洁的方式做一些初始化工作。
一旦提到这个,大多数人会想到即时函数(Immediate Functions,也可称为‘自执行函数’),而且,即时函数也经常用在JS代码模块化或者创建单例对象的场景。
一个典型的即时函数IIFE如下:
(function () {
var text = 'hello world!';
alert(text);
}());
显而易见,text
是一个临时变量,不会污染全局环境。
其实,还有另外一种不常见的方式:即时对象初始化。
对象初始化
看一个例子就立刻明白了。
({
width: 300,
height: 300,
getArea: function(){
return this.width * this.height;
},
init: function(){
console.log(this.getArea());
}
}).init();
在上面的例子里,同样,括号里面的对象,也是一个临时变量,通过立刻执行该对象里的某个函数,完成初始化设置任务。
即时对象初始化有两种写法(两者并无区别):
({...}).init();
({}.init());
小结
即时函数和对象初始化没有孰优孰劣的区别,萝卜青菜各有所爱~:)