以下为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
。