哦 我试了下 原来都弹出[object Object] 
var a=function(){
 return 33}
a.prototype = {
   initialize: function(name){
    this.name = name;
   }
}
var aa=new a("mike")
alert(aa)//也弹出[object Object]
但是下面这两种写法 有什区别啊???
要保证弹出mikevar a=function(){
 return this.initialize.apply(this, arguments)}
a.prototype = {
   initialize: function(name){
    this.name = name;
   }
}
var aa=new a("mike")
alert(aa)//弹出[object Object]
alert(aa.name)//弹出mikevar a=function(){
  this.initialize.apply(this, arguments)}
a.prototype = {
   initialize: function(name){
    this.name = name;
   }
}
var aa=new a("mike")
alert(aa)//弹出[object Object]
alert(aa.name)//弹出mike

解决方案 »

  1.   

    也是一直不明白为何要个return
    <script>
    var a=function(i){i++}
    var b={a:'a'}
    alert(a.apply(b,[b.a]))
    </script>
    想这样a.apply(b) 出来的明明就是undefined ,未何会返回undefined了,不解其中奥妙!
      

  2.   

    var a=function(){
      this.initialize.apply(this, arguments)}
    a.prototype = {
       initialize: function(name){
        this.name = name;
       }
    }
    你可以把这部分看成是一个属性.
    你ALERT(aa),aa是一个a类,返回的当然是一个类对象!
    你alert(aa.name)返回的是一个属性!你光凭这两个ALERT怎么能说明return和不return 一样不一样呢???
    一般来说是根据需要才return的,比如说我要用这个值的时候,才把值return回去!