以下为ChatGPT自动生成的解答,正确与否请自行判断。 也许你也可以从大家的发帖中找到想要的答案!

BFE.devAI解答 - JavaScript 代码题
60. 实现自己的`new`

function myNew(constructor, ...args) {  const obj = Object.create(constructor.prototype);  const result = constructor.apply(obj, args);  return typeof result === "object" ? result : obj;}

使用方法:

function Person(name, age) {  this.name = name;  this.age = age;}Person.prototype.sayHello = function() {  console.log(`Hello, my name is ${this.name} and I am ${this.age} years old.`);}const john = myNew(Person, "John", 30);john.sayHello(); // 输出:Hello, my name is John and I am 30 years old.

说明:

  • myNew() 接受一个构造函数和任意数量的参数。
  • 它首先创建一个空对象 obj,并将其原型链指向构造函数的原型对象。
  • 然后它调用构造函数并传递给它所有的参数。
  • 最后,它检查构造函数的返回值类型。如果它是一个对象,则返回该对象;否则返回创建的新对象 obj