前端手写代码面试题
目录

实现一个函数 myCreate(proto),模拟 Object.create

· 约 2 分钟读完 · 第 18 / 125 章

推荐答案

本题详细解读

1. 函数功能

myCreate(proto) 函数用于创建一个新对象,并将该对象的原型设置为传入的 proto 参数。这个函数模拟了 Object.create 的行为。

2. 参数说明

  • proto:新创建对象的原型对象。可以是 null 或一个对象。

3. 实现思路

  1. 参数校验:首先检查 proto 的类型,确保它是一个对象或 null。如果不是,则抛出 TypeError。
  2. 创建构造函数:定义一个空的构造函数 F。
  3. 设置原型:将 F 的原型设置为传入的 proto。
  4. 返回新对象:通过 new F() 创建一个新对象,并返回该对象。由于 F 的原型已经被设置为 proto,因此新对象的原型链会指向 proto。

4. 代码解析

  • if (typeof proto !== 'object' && typeof proto !== 'function'):检查 proto 是否为对象或函数类型,如果不是则抛出错误。
  • function F() {}:定义一个空的构造函数 F。
  • F.prototype = proto:将 F 的原型设置为 proto。
  • return new F():通过 new F() 创建一个新对象,并返回该对象。

5. 注意事项

  • 如果 proto 是 null,则新对象的原型为 null,即它没有原型链。
  • 如果 proto 是一个对象或函数,则新对象的原型链会指向 proto。