new一个对象的过程是什么,手写代码表示

Posted 沿着路走到底

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了new一个对象的过程是什么,手写代码表示相关的知识,希望对你有一定的参考价值。

new 一个对象的过程

- 创建一个空对象 obj,继承构造函数的原型

- 执行构造函数(将 obj 作为 this)

- 返回 obj

/**
 * @description 实现 new
 */

export function customNew<T>(constructor: Function, ...args: any[]): T 
    // 1. 创建一个空对象,继承 constructor 的原型
    const obj = Object.create(constructor.prototype)
    // 2. 将 obj 作为 this ,执行 constructor ,传入参数
    constructor.apply(obj, args)
    // 3. 返回 obj
    return obj


class Foo 
    // 属性
    name: string
    city: string
    n: number

    constructor(name: string, n: number) 
        this.name = name
        this.city = \'北京\'
        this.n = n
    

    getName() 
        return this.name
    


const f = customNew<Foo>(Foo, \'双越\', 100)
console.info(f)
console.info(f.getName())

Object.create 和 的区别

  创建空对象,原型指向 Object.prototype

`Object.create`  创建一个空对象,原型指向传入的参数

以上是关于new一个对象的过程是什么,手写代码表示的主要内容,如果未能解决你的问题,请参考以下文章

手写new

如何手写一个单例模式

JS手写New操作符

手写一个IOC容器

01Spring源码-手写篇-手写IoC实现

01Spring源码-手写篇-手写IoC实现