MST

星途 面试题库

面试题:JavaScript 中函数的上下文与 this:模拟实现 new 操作符对 this 的影响

JavaScript 的 new 操作符会改变函数调用时 this 的指向。请手动模拟实现一个类似于 new 操作符的函数 `myNew`,该函数接收一个构造函数 `constructor` 和一系列参数,并返回一个新的对象实例,同时要正确处理 this 在新实例中的指向。示例调用:`const MyClass = function(name) { this.name = name; }; const instance = myNew(MyClass, 'testName'); console.log(instance.name);`
20.2万 热度难度
编程语言JavaScript

知识考点

AI 面试

面试题答案

一键面试
function myNew(constructor, ...args) {
    // 创建一个新对象,其原型指向构造函数的原型
    let newObj = Object.create(constructor.prototype);
    // 使用构造函数初始化新对象,并将this指向新对象
    let result = constructor.apply(newObj, args);
    // 如果构造函数返回的是一个对象,则返回该对象,否则返回新创建的对象
    return (typeof result === 'object' && result!== null)? result : newObj;
}