var aaa = (function(){
var a = 1;
function bbb(){
a++;
alert(a);
}
function ccc(){
a++;
alert(a);
}
return {
b : bbb,
c : ccc
}
})();
//aaa.b(); //2
//aaa.c(); //3
上面这段代码中的返回值的写法如何理解,即{
b : bbb,
c : ccc
}当然这里是json的写法,可是这样写如何解释呢?还有这里的return {
b : bbb,
c : ccc
}为什么不写成return {
b : bbb(),
c : ccc()
}呢
------解决方案--------------------
这里是返回的一个对象,不是json格式啊
执行上面的函数之后,aaa={b:bbb,c:ccc}的一个对象,可以通过a.bbb调用对应的方法。
对于函数的引用,加了括号是执行了,不是引用了。
比如你要在文档onload之后,绑定一个函数为fn,你会这样写
window.onload = fn;
而不会这么写:
window.onload = fn();
因为这个时候,fn会在执行到这行代码时,就直接执行了,那么在onload被触发的时候,就不会再执行了。
------解决方案--------------------
{
b : bbb,
c : ccc
} 把这个名值对作为返回值,赋值给aaa
若果写出这样: {
b : bbb(),
c : ccc()
}
b的值就是bbb()这个方法的返回值,而不是这个方法。