跪求大神指教一个js问题

最近一直在学习js,遇到这样的问题:

 function fun()  
{  
    this.name = 'name';  
    return [];  
}  
var a = new fun; 
a.name; //输出undefined
但是
function fun()  
{  
    this.name = 'name';  
    return 2;  
}  
var a = new fun; 
a.name;//输出“name”

为什么两次结果不一样?哪位大神给个解释!

不要返回对象,要不会被重写,你自己打印对象出来看就知道了,return []时a被赋值为[],返回普通类型则是fun的实例对象

http://www.bennadel.com/blog/2522-providing-a-return-value-in-a-javascript-constructor.htm
http://stackoverflow.com/questions/1978049/what-values-can-a-constructor-return-to-avoid-returning-this
http://stackoverflow.com/questions/3350215/what-is-returned-from-a-constructor