js nuevo método escrito a mano

1. ¿Qué hace el nuevo operador?

        En el proceso de nuestra programación, el operador new puede usarse a menudo, por lo que si desea escribir el nuevo método a mano, debe conocer su función, y su función se puede dividir en los siguientes puntos:

        1. Crea un nuevo objeto vacío

        2. Apunte el prototipo ermitaño (__proto__) de este nuevo objeto vacío al objeto prototipo (prototipo) del constructor

        3. Apunte esto en el constructor al objeto vacío recién creado y ejecute el constructor para devolver el resultado de la ejecución.

        4. Determine si el resultado de la ejecución devuelto es un tipo de referencia, si es un tipo de referencia, devuelva el resultado de la ejecución, la nueva operación falla, de lo contrario, devuelva el nuevo objeto creado

2. Implementar el nuevo método

        Ahora que conoce la función del operador new, puede implementar su función de acuerdo con estos puntos y agregar directamente el código:

function myNew(Fn,...args){
    // 1、创建一个空的对象
    let obj = {}; // let obj = Object.create({});
    // 2、将空对象的原型prototype指向构造函数的原型
    Object.setPrototypeOf(obj,Fn.prototype); // obj.__proto__ = Fn.prototype 
    // 以上 1、2步还可以通过 const obj = Object.create(Fn.prototype) 实现
    // 3、改变构造函数的上下文(this),并将参数传入
    let result = Fn.apply(obj,args);
    // 4、如果构造函数执行后,返回的结果是对象类型,则直接将该结果返回,否则返回 obj 对象
    return result instanceof Object ? result : obj;
    // return typeof result === 'object' && result != null ? result : obj

}

Supongo que te gusta

Origin blog.csdn.net/m0_72838183/article/details/127174649
Recomendado
Clasificación