new做了以下操作:

  • 创建一个新的对象obj
  • 将对象与构建函数通过原型链连接起来
  • 将构建函数中的this绑定到新建的对象obj上
  • 根据构建函数返回类型作判断,如果是原始值则被忽略,如果是返回对象,需要正常处理 ```javascript function mynew(func, …args) { const obj = {} obj.proto = func.prototype let result = func.apply(obj, args) return result instanceof Object ? result : obj } function Person(name, age) { this.name = name; this.age = age; } Person.prototype.say = function () { console.log(this.name) }

let p = mynew(Person, “huihui”, 123) console.log(p) // Person {name: “huihui”, age: 123} p.say() // huihui ```