分享|前端面试JS手写题解析系列6——实现new
1246
发布于 未知归属地

前端面试JS手写题解析系列6——实现new

关注程序员耳东,编程转码真轻松

考点:原型链、this、new运算符的原理

防杠指南:本文不适用于资深大佬,若喷必回

这个题目出现频率很高,面霸的粉丝反馈这个题目经常被问到,值得一次性搞清楚

首先看看new一个对象的时候,背后发生了什么,比如说以下代码:

image.png

我们梳理一下这个过程中发生了什么:

  1. new Car("Audi")返回了一个对象,并且这个对象把传进去的name作为了自己的属性
  2. 返回的对象__proto__属性指向了Car函数的prototype

但是这里有一个特殊的情况,如果Car这个构造函数本身就返回了一个对象,那么结果就不一样了,比如说如下代码:

image.png

所以其实这个过程中有三个需要注意的点:

  1. new Car("Audi")返回了一个对象,并且这个对象把传进去的name作为了自己的属性
  2. 返回的对象__proto__属性指向了Car函数的prototype
  3. 如果Car函数本身就返回一个对象,那就直接返回这个对象

并且在实现的时候需要考虑到new传入的constructor不是函数的情况,需要有一个健壮性判断

所以我们写的代码如下:

image.png

评论 (6)
暂无评论