构造函数有无返回值?

一般不需要,事实上可以有。

返回字符串

如下
Person() 这个构造函数执行以后返回字符串 doubi。这里是我随便编的一个。
但是console.log(new Person())返回的是Person这个实例化的对象。这个和return没啥关系。

<meta charset="utf-8">
<script>
function Person(){

    this.name="monster1935";
    this.age='24';
    this.sex="male";

    return "doubi";
}

console.log(Person());  //doubi
console.log(new Person());//Person {name: "monster1935", age: "24", sex: "male"}


image.png

如果返回值为引用类型

如下,返回的那玩意类型是引用类型。(数组, 对象, 函数等)。如果是值类型,返回obj。如果是引用类型,就返回这个引用类型的对象。(不是this对象)

function Person(){

    this.name="monster1935";
    this.age='24';
    this.sex="male";

    return {
        name:'Object',
        age:'12',
        sex:'female'
    }

}
console.log(Person());  //Object {name: "Object", age: "12", sex: "female"}
console.log(new Person());//Object {name: "Object", age: "12", sex: "female"}
image.png

总结

  1. return的是五种简单数据类型:String,Number,Boolean,Null,Undefined。 这种情况下,忽视return值,依然返回this对象。
  2. return的是Object 这种情况下,不再返回this对象,而是返回return语句的返回值。

也就是说如果你return的是非引用类型的话。并没有什么卵用。如果你返回一个对象,那么这个对象会替代构造函数中的this

挺别扭但是so easy。

参考

关于Javascript中构造函数返回值的问题 - 博客频道 - CSDN.NET

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 8,904评论 0 4
  • 普通创建对象和字面量创建对象不足之处:虽然 Object 构造函数或对象字面量都可以用来创建单个对象,但这些方式有...
    believedream阅读 7,170评论 2 18
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,243评论 19 139
  • 有没有这样一个人,你愿意和他分享你所有的快乐,在他的面前展现你的调皮和狼狈,无条件不求回报的想为他付出一切,低谷时...
    一个Alan阅读 4,367评论 0 0
  • 今天在611早睡早起王国得了一个雅名-成芋圆君/成玉元君。 觉察事实: 611王国的统帅为了与时俱进建议所有伙伴改...
    洁丽1688阅读 1,567评论 3 1

友情链接更多精彩内容