function fun(n,o){
console.log(n,o);
return {
fun:function(m){
return fun(m,n);

};
}
var a = fun(0);
a.fun(1);
a.fun(2);
a.fun(3);
var b = fun(0).fun(1).fun(2).fun(3);
var c = fun(0).fun(1);
c.fun(2);
c.fun(3);

解决方案 »

  1.   


    // fun函数
    function fun(n, o){
    console.log(n, o);
    // 返回一个对象
    return {
    // fun方法
    fun: function(m){
    // 调用fun函数
    // 将上次调用的第一位参数作为本次的第二位参数
    // 返回fun函数的结果
    return fun(m, n);

    };
    }// 调用fun函数
    // a为返回的对象,它有fun方法
    var a = fun(0);
    a.fun(1); // 执行fun方法
    a.fun(2); // 执行fun方法
    a.fun(3); // 执行fun方法// 调用fun函数,会返回一个带有fun方法的对象
    // 执行fun方法,会调用fun函数,又会返回一个带有fun方法的对象
    // 如此,生生不息
    var b = fun(0).fun(1).fun(2).fun(3);
    var c = fun(0).fun(1);
    c.fun(2);
    c.fun(3);
      

  2.   

    函数执行后返回一个对象,这个对象的fun方法中又类似递归的调用这个函数。再次返回这个对象。
    这样就可以实现无限的链式调用效果