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_指向构造函数的原型
相关推荐
程序员小寒2 分钟前
Vue.js 为什么要推出 Vapor Mode?
前端·javascript·vue.js
白菜__9 分钟前
去哪儿小程序逆向分析(酒店)
前端·javascript·爬虫·网络协议·小程序·node.js
困惑阿三32 分钟前
深入理解 JavaScript 中的(Promise.race)
开发语言·前端·javascript·ecmascript·reactjs
我命由我1234534 分钟前
微信小程序 bind:tap 与 bindtap 的区别
开发语言·前端·javascript·微信小程序·小程序·前端框架·js
克喵的水银蛇39 分钟前
Flutter 布局实战:掌握 Row/Column/Flex 弹性布局
前端·javascript·flutter
哆啦A梦15881 小时前
60 订单页选择收货地址
前端·javascript·vue.js·node.js
馬致远1 小时前
案例1- 跳动的心
javascript·css·css3
Hilaku1 小时前
利用 link rel="prefetch":如何让用户的页面秒开?
前端·javascript·性能优化
youyu-youyu1 小时前
h5 签名 vue
javascript·vue.js·ecmascript
没事多睡觉6661 小时前
JavaScript 中 this 指向教程
开发语言·前端·javascript