美文网首页
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 无法执行操作

    相关文章

      网友评论

          本文标题:new 操作符

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