对象返回值的区别



 下面两种写法的区别

               var obj=function(){
                      this.myName="seve";
                      return {//这样写下面new的时候会报错
                          alert(1);
                      }
               }

               var obj=function(){
                      this.myName="seve";
                   //这样为什么却能弹出2和object
                      return  alert(2);
               }

               var ob=new obj();
               alert(ob);

jquery JavaScript javascript面向对象

阿风wind 9 years, 6 months ago

当然会报错了……对象字面量里直接函数调用,谁教你这么写的呢?


 // 你 return 的是这么个东西,这语法不报错才见鬼了
{
    alert(1)
}

下面的写法是正确的,因为:

  1. 首先 alert(2) 调用了,于是你看到了第一个 2

  2. alert(2) 的返回值是 undefined ,当构造函数最终返回的不是一个对象时, new 操作符会创建一个对象取代之,因此 var ob = new obj() 还是会得到一个对象实例

  3. alert(ob) 调用,于是你看到了 [object Object]

想飞and无翼 answered 9 years, 6 months ago

因为你的第一个写法有两个问题:

  • 语法问题,对象定义的时候,每个成员之间,不能使用 ; ,必须使用 ,

  • 定义的时候,如果是对象,其成员必须有索引, {false, null} ,是不行的,格式必须是: {bol: false, nil: null}

所以,改成如下则可以成功运行:


 var obj = function() {
 this.myName = "seve";
 return { //这样写下面new的时候会报错
   alert: alert(1)
 }
}

魔法研究者 answered 9 years, 6 months ago

Your Answer