搜索
javascript - 对象返回值的区别
伊谢尔伦
伊谢尔伦 2017-04-10 15:46:13
[JavaScript讨论组]
  下面两种写法的区别

               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);
伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

全部回复(2)
高洛峰

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

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

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

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

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

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

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

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

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

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

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

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号