本帖最后由 debugs_i_n_a 于 2014-05-12 16:31:10 编辑

解决方案 »

  1.   

    test()的返回值是bb,所以实际上xx是bb的实例,所以xx.x2是undefined
      

  2.   

    bb = function bb() {
                alert(that.x2);
                alert(x1);
            } ,所以 bb 没有属性x2
      

  3.   

    使用new的时候 默认返回的是内部的this对象 但是现在你却返回一个function bb 该function是没有x2属性的 x2属性在this上面
      

  4.   

     new test();
    你先看  new 运算符  这个优先级是最高的 也就是 必须先执行的然后看new的功效  会建立一个 object  用后面的 function调用后 返回
    但是 如果 这个function 里面返回了 object  那么 new最终返回这个 objectfunction调用里面的 this 指向 最初建立的object  但是你强制返回了一个 你自己的object