美文网首页
JS 手写 new

JS 手写 new

作者: Cherry丶小丸子 | 来源:发表于2022-08-21 11:04 被阅读0次

    new 关键字作用

    众所周知,js 中 new 关键字的作用就是创建一个构造函数的实例对象

    如以下构造函数,使用 new 关键字(注意:构造函数的第一个字母大写,与普通函数区分)
    function Person(name, age) {
        this.name = name;
        this.age = age;
    }
    let p = new Person('张三', '18');
    console.log(p); // Object { name: "张三", age: 18 }
    
    手写 new,分四步骤,直接贴代码
    // Fun 为构造函数, args 表示传参
    function myNew(Fun, ...args) {
        // 1、在内存中创建一个新对象
        let obj = {};
        
        // 2 、把新对象的原型指针指向构造函数的原型对象
        obj.__proto__ = Fun.prototype;
        
        // 3、利用函数的 call 方法改变 this 指向,并且执行构造函数内部的代码(传参)
        let res = Fun.apply(obj, args);
        
        // 4、判断函数执行结果的类型
        if (res instanceof Object) {
            return res;
        } else {
            return obj;
        }
    }
    
    let obj = myNew(newFn, "XiaoMing", "18");
    console.log("newObj:", obj);
    

    相关文章

      网友评论

          本文标题:JS 手写 new

          本文链接:https://www.haomeiwen.com/subject/txqmgrtx.html