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_指向构造函数的原型
相关推荐
耶啵奶膘34 分钟前
uni-app头像叠加显示
开发语言·javascript·uni-app
chéng ௹36 分钟前
uniapp 封装uni.showToast提示
前端·javascript·uni-app
生擒小朵拉1 小时前
STM32添加库函数
java·javascript·stm32
还有多远.2 小时前
jsBridge接入流程
前端·javascript·vue.js·react.js
w2sfot2 小时前
Passing Arguments as an Object in JavaScript
开发语言·javascript·ecmascript
烛阴2 小时前
【TS 设计模式完全指南】从零到一:掌握TypeScript建造者模式,让你的对象构建链式优雅
javascript·设计模式·typescript
前端Hardy3 小时前
HTML&CSS:有趣的漂流瓶
前端·javascript·css
前端Hardy3 小时前
HTML&CSS :惊艳 UI 必备!卡片堆叠动画
前端·javascript·css
无羡仙3 小时前
替代 Object.freeze 的精准只读模式
前端·javascript
小菜全4 小时前
uniapp新增页面及跳转配置方法
开发语言·前端·javascript·vue.js·前端框架