关于构造函数的返回值

217 阅读1分钟

关键词:构造函数

非Object

function foo() {
  this.getAge = function() {
    console.log(this.age)
  }
  return 123; // 或Null/Undefined/String/Boolean/Symbol/BigInt类型的值, 或Array...
}

console.log(new foo()); // { getAge: function (){} }
// 说明return一个非Object类型的值会被忽略(除了Array), 而是new一个新对象

Object

function foo() {
  this.getAge = function() {
    console.log(this.age)
  }
  return {
    age: 100
  };
}
pp = new foo()
console.log(pp) {
  age: 100
}
pp.getAge() // 出错
// 表明new foo() 返回的是return的对象本身, 没有new一个新对象

Function

function foo() {
  return function () {
    console.log("foo");
  };
}
console.log(new foo()) // 函数本身

暂时就试出来了这么多