美文网首页
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

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

  • 手写new

  • js手写apply、call、new、bind方法

    call apply new bind

  • 面试秘籍之手写系列

    一、手写call函数 二、手写bind函数 三、手写实现new功能的函数 四、手写reduce函数 五、手写防抖函...

  • 前端手写

    节流 防抖 用xhr手写axios 函数柯里化 手写promise 手写reduce new 深拷贝 string...

  • 如何手写一个new

    和人交流时发现,现在面试可能会问到如何手写一个new,也就是如何自己手写方法实现new()功能 ,觉得自己从没想过...

  • 小手一敲,让JS Map方法现原形

    一.前言 文章主要讲JS Map对象的用法和如何手写Map,非常适合初步学习了JS的同学,适当的学会手写JS源码的...

  • js获取0点以及23:23:59

    js 取得今天0点: const start = new Date(new Date(new Date().toL...

  • js 打印当前时间

    //js 打印当前时间var currentTime = new Date(new Date().setHours...

  • js new 运行机制

    js手札--js中new到底做了些啥JS核心系列:理解 new 的运行机制深入理解 Javascript 运行机制及原型

网友评论

      本文标题:JS 手写 new

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