var b={}
var a=function(){
this.b=function(){
this.c="ccc"
}
var bb=this.b.call(b)
return bb//明明返回的是这个
}var aa=new a
//for(i in aa)alert(i)//明明return的bb,为什么返回的还是(new a)的引用(和return this是一样的),为什么啊?????
alert(b.c)//ie下不弹出ccc,ff下弹出ccc var a=function(){}
var b={}
a.b=function(){
this.c="ccc"
}
var bb=a.b.call(b)
alert(bb)//弹出undefined<-----这才是正确的嘛

解决方案 »

  1.   

    var b={}
    var a=function(){
        this.b=function(){
        this.c="ccc"
    }
        var bb=this.b.call(b)
        alert(typeof bb) //弹出undefined,要bb为Object才会返回bb,否则返回a的实例
        return bb;
    }
      

  2.   

    晕 好像真的是这样 new 后return 就不管用了,学js一年了  这个问题才发现
    我晕~~~~~~~以前我都是认为返回的是return 的值的
    var b
    var a=function(){
       
        var bb=b="ss"
        return bb
    }
    var aa=new a
    alert(aa)//弹出[object Object]
    alert(b)//弹出ssvar b
    var a=function(){
       
        var bb=b=undefined
        return bb
    }
    var aa=new a
    alert(aa)//弹出[object Object]
    alert(b)//弹出undefined看来我要大大的改下了(这个原理 牵涉的东西很多)
      

  3.   

    bb 是个undefined,而你是用的new操作符,所以只是创建a的对象,返回的bb成了垃圾
      

  4.   

    @2楼 太厉害了吧  说的都是对的 ~ 我晕 你这都是在哪看的?? 你是怎么发现的???
    var b={bb:"bbbbbb"}
    var a=function(){
       
       
        return b
    }
    var aa=new a
    alert(aa.bb)//弹出bbbbbb
    alert(b.bb)//弹出bbbbbbvar a=function(){
       
       
        return ["sss"]
    }
    var aa=new a
    alert(aa)//弹出sss
      

  5.   

    这个问题以前没太注意。LZ比较细心哦, 我测试了一下:function bbbb(){
    return undefined;
    }
    alert(bbbb());
    alert(new bbbb())结果(IE):undefined 
     [object Object];我想原因出在new上,因为new会为分配内存。所为第二个是一个对象。  只能想到这, 期待高手。
      

  6.   

    请问一下javascript中那个call()怎么理解?
    我还真没见过?
      

  7.   

    建议楼主学习的时候循序渐进,理解作用域,理解call,apply,理解继承...我们看一下楼主的例子:<script type="text/javascript">var b={};var a=function(){
        this.b=function(){
            this.c="ccc"
        }
        var bb=this.b.call(b)
        return bb;//明明返回的是这个 -> 在该函数执行在赋值运算中才发生
    }var aa = new a;//aa是a的实例,这里是new实例化运算,并不是赋值运算for(i in aa){
        alert(i);//a的实例的属性b
    }</script>
    看,是不是很清晰。