You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

构造函数return语句差异咨询:两类示例区别及参考资料

构造函数返回值的差异解析

在JavaScript里,用new操作符调用构造函数时,返回值遵循以下规则:

  • 若构造函数返回引用类型(比如数组、对象、函数这类复杂类型),new会直接返回这个引用类型的值,跳过原本创建的实例对象
  • 若构造函数返回原始类型(数字、字符串、布尔值、null、undefined),new会忽略这个返回值,返回之前通过this构建的实例对象

对应给出的两个例子:

第一个例子:返回引用类型(数组)

function x (){
    this.name="Diana"
    return [1,2,3]
}
let newOne = new x() // 返回值是数组而非对象

这里构造函数x返回的是数组(属于引用类型),所以new x()直接返回这个数组,原本绑定了name属性的实例对象会被丢弃,最终newOne就是[1,2,3]。

第二个例子:返回原始类型(数字)

function ValString (){
    this.name="Diana"
    return 12
}
let newOneWithTheString = new ValString () // 返回值是对象而非12

这个构造函数返回的是数字12(原始类型),new操作符会忽略这个返回值,转而返回之前创建的实例对象,所以newOneWithTheString是带有name: "Diana"属性的对象,而不是12。

内容的提问来源于stack exchange,提问作者Diana

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 16:00:57