function compose(f,g)
{        return function()
                {                        return f.call(this, g.apply(this, arguments));                };}
var square = function(x){return x*x;};
var squareofsum = compose(square, sum);
squareofsum(2,3)

이게 25가 나오는데 return f.call(this, g.apply(this, arguments)); 이부분 잘 모르겟슴