var foo={
        bar:function()
    {
        console.log(this);
    }
    };
    var bar=foo.bar;
    foo.bar();
    (bar,foo.bar)();

解决方案 »

  1.   

    感觉你问的是this指向的问题,http://www.cnblogs.com/TomXu/archive/2012/01/12/2308594.html这篇文章去看看也许对你有帮助
      

  2.   

        foo.bar();在用()调用函数时系统会获得两个值,一是函数的引用,二是函数的调用对象,函数执行时就会把调用对象传给函数内的this
        (bar,foo.bar)();这样是先执行逗号运算符 bar,foo.bar。 逗号运算符只会返回最后一个表达式的值,也就是foo.bar的值,但这时还没有进行函数调用,只会返回函数的引用,不会有函数的调用对象。
        之后再对返回的函数引用进行调用,由于没有函数的调用对象,就会把window作为调用对象传给函数内的this