九州编程
var a = fun(0).fun(1);//这里执行fun(0),打印o,o为undefined,并返回一个对象{fun:function(m){return fun(m,n);}},对象里的n指向0//接下来执行{fun:function(m){return fun(m,n);}}.fun(1),得到的是fun(1,0)的运行结果,即打印0,并把{fun:function(m){return fun(m,n);}}赋值给a(此时n指向1)//记住 a = {fun:function(m){return fun(m,n);}} (此时n指向1)a.fun(2);//这里执行{fun:function(m){return fun(m,n);}}.fun(2),得到的是fun(2,1)的运行结果,即打印1,并返回{fun:function(m){return fun(m,n);}},没有接收方a.fun(3);//这里执行{fun:function(m){return fun(m,n);}}.fun(2),得到的是fun(3,1)的运行结果,即打印1,并返回{fun:function(m){return fun(m,n);}},没有接收方var b =fun(0).fun(1).fun(2).fun(3);//这里执行fun(0),打印o,o为undefined,并返回一个对象{fun:function(m){return fun(m,n);}},对象里的n指向0//接下来执行{fun:function(m){return fun(m,n);}}.fun(1),得到的是fun(1,0)的运行结果,即打印0,并返回{fun:function(m){return fun(m,n);}} (此时n指向1)//接下来执行{fun:function(m){return fun(m,n);}}.fun(2),得到的是fun(2,1)的运行结果,即打印1,并返回{fun:function(m){return fun(m,n);}} (此时n指向2)//接下来执行{fun:function(m){return fun(m,n);}}.fun(3),得到的是fun(3,2)的运行结果,即打印2,并返回{fun:function(m){return fun(m,n);}}赋值给b (此时n指向3)var c =fun(0);//这里执行fun(0),打印o,o为undefined,并返回一个对象{fun:function(m){return fun(m,n);}}赋值给c,对象里的n指向0c.fun(1);//这里执行{fun:function(m){return fun(m,n);}}.fun(1),得到的是fun(1,0)的运行结果,即打印0,并返回{fun:function(m){return fun(m,n);}},没有接收方c.fun(2);//这里执行{fun:function(m){return fun(m,n);}}.fun(2),得到的是fun(2,0)的运行结果,即打印0,并返回{fun:function(m){return fun(m,n);}},没有接收方c.fun(3);//这里执行{fun:function(m){return fun(m,n);}}.fun(3),得到的是fun(3,0)的运行结果,即打印0,并返回{fun:function(m){return fun(m,n);}},没有接收方