js手書きの新しいメソッド

1. 新しいオペレーターは何をするのですか?

        プログラミングの過程では new 演算子が頻繁に使用されるため、new メソッドを手動で作成する場合は、その機能を理解しておく必要があります。その機能は次の点に分けられます。

        1. 新しい空のオブジェクトを作成します

        2. この新しい空のオブジェクトの隠者プロトタイプ (__proto__) をコンストラクターのプロトタイプ オブジェクト (prototype) にポイントします。

        3. コンストラクターで this を新しく作成した空のオブジェクトにポイントし、コンストラクターを実行して実行結果を返します。

        4. 返された実行結果が参照型であるかどうかを判断し、参照型である場合は実行結果を返し、新しい操作は失敗します。そうでない場合は、作成された新しいオブジェクトを返します。

2. 新しいメソッドを実装する

        新しい演算子の機能がわかったので、次の点に従ってその機能を実装し、コードを直接追加できます。

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

}

おすすめ

転載: blog.csdn.net/m0_72838183/article/details/127174649