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_指向构造函数的原型
相关推荐
一个游离的指针1 小时前
ES6基础特性
前端·javascript·es6
2501_915373885 小时前
Vue 3零基础入门:从环境搭建到第一个组件
前端·javascript·vue.js
运维@小兵8 小时前
vue开发用户注册功能
前端·javascript·vue.js
m0_6161884911 小时前
使用vue3-seamless-scroll实现列表自动滚动播放
开发语言·javascript·ecmascript
湛海不过深蓝11 小时前
【ts】defineProps数组的类型声明
前端·javascript·vue.js
layman052811 小时前
vue 中的数据代理
前端·javascript·vue.js
layman052812 小时前
vue中理解MVVM
前端·javascript·vue.js
一舍予13 小时前
八股文-js篇
开发语言·前端·javascript
Edward Nygma15 小时前
springboot3+vue3融合项目实战-大事件文章管理系统-更新用户密码
android·开发语言·javascript
sunbyte15 小时前
Three.js + React 实战系列 - 职业经历区实现解析 Experience 组件✨(互动动作 + 3D 角色 + 点击切换动画)
javascript·react.js·3d