#15实现MyNew方法

BetaSuBetaSu2022/03/25

要实现的功能

我们可以使用new实例化一个构造函数,请根据实例化过程中构造函数内部工作流程,实现类似功能的MyNew方法。

代码示例

function MyNew(fn, ...args) {
  // 实现...
}

function Person(name, age) {
  this.name = name;
  this.age = age;
}
const kasong = MyNew(Person, 'KaSong', 18);
console.log(kasong.age); // 18

function Something(name) {
  this.name = name;
  return {name: 'something'};
}
const something = MyNew(Something, 'XiaoMing');
console.log(something.name); // something

问题补充

  1. 请阐述实例化过程中构造函数内部工作流程
  2. 请写出代码,并为代码的关键步骤增写注释
  3. 附带测试用例是加分项
  4. 不需要考虑异常发生
  5. 不过度设计,代码简洁优雅是加分项

最佳答案

Chorer的回答

理由:实现完备,且包含问题补充中的所有要素

答题同学须知

  • 答题规范:请在一次评论中完成作答,后续修改也请编辑该评论,而不是追加新的评论

  • 评选标准:最佳答案由围观同学👍卡颂共同决定

  • 评选时间:一般是当日18:00左右评选,如果问题发布当天回答数较少,问题悬赏金额可能增加,同时悬赏时间也会增加

围观同学须知

  • 对于你满意的答案,请不要吝惜你的 👍,这是评选最佳答案的依据

  • 非答题的评论会被删除,问题相关讨论请在赏金猎人群中进行