美文网首页
手写new 2020-06-02

手写new 2020-06-02

作者: Allan要做活神仙 | 来源:发表于2020-06-02 23:06 被阅读0次

前言

一直没弄清楚,今天好好花点时间搞搞清楚 new

手写new

function new(Fn) { // Fn 是构造函数
    lat obj = {}; // 1
    obj.__proto__ = Fn.prototype; // 2
    let res = Fn.call(obj);  // 3

    return typeof res === 'Object' ? res : obj; // 4
}

1、创建空对象
2、构造函数this指向新的对象
3、执行构造函数
4、返回新对象 ( 构造函数 return 一个引用类型:返回引用return的内容;否则返回所有内容)

使用:

function new(Fn) { // Fn 是构造函数
    lat obj = {};
    obj.__proto__ = Fn.prototype;
    let res = Fn.call(obj);
    return typeof res === 'Object' ? res : obj;
}

var Person = function(){
  this.name = 'aaa';
  this.fn = function() {
    console.log(this.name);
  }
}

var a = new(Person);

字面量 好还是 new 好?

{}是字面量,可以立即求值,而new Object() 本质上是方法(只不过这个方法是内置的)调用, 既然是方法调用,就涉及到在 proto 链中遍历该方法,当找到该方法后,又会生产方法调用必须的 堆栈 信息,方法调用结束后,还要释放该堆栈

相关文章

  • 手写new 2020-06-02

    前言 一直没弄清楚,今天好好花点时间搞搞清楚 new 手写new 1、创建空对象2、构造函数this指向新的对象3...

  • 手写new

  • 面试秘籍之手写系列

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

  • 前端手写

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

  • JS 手写 new

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

  • 2020-06-04

    2020-06-03 2020-06-02 2020-06-02 2020-05-31 2020-05-30 平凡...

  • 2020-06-05

    2020-06-05 2020-06-04 2020-06-03 2020-06-02 2020-06-02 20...

  • 生活

    2020-06-02 米安米 字数 282 · 阅读 0 2020-06-02 16:32 岁月穿过,留下些许无奈...

  • 如何手写一个new

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

  • 2020-06-03

    2020-06-02 2020-06-02 2020-05-31 2020-05-30 平凡的岁月 陆文勇乘坐的大...

网友评论

      本文标题:手写new 2020-06-02

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