日期:2014-05-16  浏览次数:20385 次

JSON能做为返回值吗
本帖最后由 lghyt2 于 2013-12-25 09:31:49 编辑
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()这个方法的返回值,而不是这个方法。