JavaScript基础之new操作神来之笔

本文深入解析JavaScript中new操作符的内部机制,演示如何通过手写实现new操作,包括创建对象、设置原型、调用构造函数及返回实例的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

总听说,程序员不却对象,需要的时候可以自己new一个出来,那么new这三个字母到底干了什么呢?

new操作符做了三件事:

(1)创建了一个共对象,将this指向了这个空对象

(2)执行构造函数,将传入的属性赋值给this

(3)为this对象设置原型为function.prototype,设置构造函数的contructor指向其构造函数本身

(4)返回this对象

那么如何实现一个new操作符呢?且看下面的代码:

function _new (fun) {
    return function (...args) {
        let obj = {}    //    创建一个空对象
        Object.setPrototypeOf(obj, fun.prototype)    //    等同于obj.__proto__ = fun.prototype 赋予新对象原型
        fun.prototype.constructor = fun    //    将fun的原型的构造函数指向自己
        let result = fun.apply(obj, args) //将参数赋值到新对象
        return result === 'object' ? result : obj
    }
}

function Animal (name, age) {
    this.name = name
    this.age = age
}

let ana = _new(Animal)('cat', 3)
console.log(ana)

_new函数实际就是new操作的神来之笔。学习的路还很长。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值