构造函数中return基本类型被忽略,仍返回new创建的对象;return引用类型则直接返回该对象,丢弃this;null虽为基本类型但同样被忽略;日常开发建议用工厂函数替代带return的构造函数。

构造函数里写 return,行为完全取决于返回值的类型:基本类型被忽略,引用类型直接接管结果。
return 基本类型时,this 依然生效
当构造函数显式返回 number、string、boolean、undefined、null、symbol、bigint 这些基本类型时,JavaScript 会无视该 return,继续返回 new 创建的那个新对象(也就是当前 this)。
-
this上添加的属性会被保留 - 返回的对象继承构造函数的
prototype -
instanceof和constructor判断都正常
return 引用类型时,this 被彻底丢弃
只要 return 的是引用类型(普通对象、数组、函数、Date、RegExp、Map、Set、自定义类实例等),new 表达式就直接返回这个对象,原始 this 实例被废弃,连内存都不再关联。
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
-
this.name = 'Alice'这类赋值完全无效 - 返回对象的
__proto__不指向构造函数的prototype -
instanceof Constructor为false,constructor属性也丢失 - 即使
return this,也算引用类型,结果仍是 this,但属于“手动返回”,不是 new 默认行为
null 是个特例:它虽是原始值,但表现像被忽略
null 在类型上属于基本类型,但它在构造函数中 return 时,行为和其它基本类型一致——new 仍返回新实例。这点常被误认为“null 是对象”,其实只是历史遗留设计,不影响判断逻辑。
立即学习“Java免费学习笔记(深入)”;
怎么快速判断该不该用 return?
日常开发中,构造函数一般不写 return。真需要灵活控制返回值,建议改用普通工厂函数:
- 用
function createPerson(name) { return { name }; }替代带 return 的构造函数 - 语义清晰,避免
instanceof意外失效 - 原型链、继承、调试都更可预测

















