美文网首页
new 操作符

new 操作符

作者: my木子 | 来源:发表于2021-05-26 06:06 被阅读0次

步骤

1、创建了一个空的 JS 对象(即{})
2、将空对象的原型指向构造函数的原型
3、将空对象作为构造函数的上下文(改变this指向)
4、对构造函数有返回值的判断,如果该函数没有返回对象,则返回 this

    function newOperator(ctor, ...args) {
      if (typeof ctor !== 'function') {
        throw 'newOperator函数的第一个参数必须是一个函数';
      };
      //1、创建一个空的对象
      let obj = {}; // let obj = Object.create({});
      //2、将空对象的原型prototype指向构造函数的原型
      Object.setPrototypeOf(obj, ctor.prototype); // obj.__proto__ = ctor.prototype
      //3、改变构造函数的上下文(this),并将剩余的参数传入
      let result = ctor.apply(obj, args);
      //4、在构造函数有返回值的情况进行判断
      return result instanceof Object ? result : obj;
    }

    function student(name, age) {
      this.name = name;
      this.age = age
    }

    let zs = newOperator(student, '张三', 20);
    console.log(zs);

箭头函数,为什么不能通过new生成实例

  • 箭头函数本身没有this指向,所以 new 无法执行操作

相关文章

  • JS基础回归01:new操作符,原型和原型链

    本篇介绍 new 操作符的背后原理以及 JS 如何依赖原型形成原型链,完成继承。 new 操作符的本质 new 操...

  • js中的new关键字都干了些什么?

    new 操作符 在有上面的基础概念的介绍之后,在加上new操作符,我们就能完成传统面向对象的class + new...

  • new

    什么是new操作符 new会生成一个实例对象,该对象的this指向该实例 实现一个new操作符

  • 关于 C++ 里的 New

    new expression : new 表达式 operator new : 操作符函数,用来分配内存. ...

  • c++_动态对象创建

    一.c语言 c语言使用malloc 来创建堆对象 二.c++ new操作符 delete操作符 如果new []...

  • new 对象 class

    new 操作符具体干了什么? 当我们new一个数据的时候,new操作符到底做了什么? 首先是创建实例对象{},th...

  • 关于 new 操作符

    1. 为什么要有new操作符? JS 的 new 到底是干什么的? 本文指出,new 操作符其实就是个语法糖,用了...

  • 刘铁猛C#(11)操作符详解(下)

    New 操作符 不仅是个关键字,也是操作符,用于创建实例,是实例构造器的操作符。 1)new 可以创建一个类型的实...

  • 2021-06-19 new操作符的实现

    JavaScript中的new操作符的原理 例子 先定义了一个构造函数Person,然后通过new操作符生成Per...

  • new操作符

    最近在掘金上看到大佬 yck 的文章 重学 JS 系列:聊聊 new 操作符把new操作符的作用,如何自己实现ne...

网友评论

      本文标题:new 操作符

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