new 一个构造函数的过程以及手写 new

  1. new 一个构造函数的过程:

【1】创建一个空对象

【2】空对象的的隐式原型 proto 或 [[ prototype ]] 指向构造函数的显示原型 prototype

【3】将 this 指向新对象

【4】执行构造函数内部代码,给新对象添加属性

【5】返回新对象

2.手写new

javascript 复制代码
funtion myNew(fn, ...args){
    let obj = Object.create(fn.prototype);
    let res = fn.apply(fn, args);
    // 构造函数执行后,返回值如果不是是对象或函数,则返回新创建的对象
    return res instanceof Object ? res: obj; 
}

也有这样写的
let obj = {};
obj._proto_ = fn.prototype;

其实目的都是为了让新创建的对象的_proto_指向构造函数的原型
相关推荐
Rowrey26 分钟前
react+typescript,初始化与项目配置
javascript·react.js·typescript
祈澈菇凉5 小时前
Webpack的基本功能有哪些
前端·javascript·vue.js
记得早睡~6 小时前
leetcode150-逆波兰表达式求值
javascript·算法·leetcode
庸俗今天不摸鱼6 小时前
Canvas进阶-4、边界检测(流光,鼠标拖尾)
开发语言·前端·javascript·计算机外设
[廾匸]7 小时前
cesium视频投影
javascript·无人机·cesium·cesium.js·视频投影
菲力蒲LY8 小时前
vue 手写分页
前端·javascript·vue.js
化作繁星9 小时前
React 高阶组件的优缺点
前端·javascript·react.js
zpjing~.~9 小时前
vue 父组件和子组件中v-model和props的使用和区别
前端·javascript·vue.js
FFF-X9 小时前
大屏自适应终极方案:基于比例缩放的完美适配实践(Vue3版)
javascript·html5