美文网首页
New操作符做了什么

New操作符做了什么

作者: 孙二柯 | 来源:发表于2021-08-19 00:08 被阅读0次

new 做了什么?

  1. 创建了一个空对象
  2. 将空对象的原型指向构造函数的原型
  3. 将这个空对象改变this的指向去调用这个构造函数
function Person(name, age) {
      this.name = name
      this.age = age
    }
    let person = Person('小唐', 26)
    console.log(person) // undefined
    console.log(window.age) // 26
    console.log(window.name) // 小糖

我们没有用new的时候,作为执行函数是返回值undefined,this此时指向的是window

let person = new Person('小唐', 26)
console.log(person) // Person {name: "小糖", age: 26}

当使用new操作符后,打印的person才是对象

模拟一个new

function _new(){
      console.log(arguments)
      let constructor = Array.prototype.shift.call(arguments)
      console.log(constructor) //取出构造函数
      console.log(arguments) // 剩下的参数
      let content = {} // 创建一个空对象
      content.__proto__ = constructor.prototype // 空对象的原型指向构造函数的原型
      constructor.apply(content,arguments) // 将这个空对象改变this的指向去调用这个构造函数
      return content
    }
    let person2 = _new(Person,'小糖',26)
    console.log(person2) //Person {name: "小糖", age: 26}

这时我们打印的person2与person 是一样的,简单模拟了new的操作,撒花🎉~~~~

相关文章

  • new 对象 class

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

  • new操作符做了什么

    js封装一个new

  • New操作符做了什么

    new 做了什么? 创建了一个空对象 将空对象的原型指向构造函数的原型 将这个空对象改变this的指向去调用这个构...

  • new 操作符到底做了什么

    先看结果 比较不同 不使用new 操作符创建实例的步骤: Person.call(p2, 'xiaoyang', ...

  • new操作符都做了什么

    创建一个新对象 继承了函数的原型。// target.proto = func.prototype; this也指...

  • new 操作符到底做了什么?

    原文:http://blog.xieyangogo.cn/2019/04/12/new-%E6%93%8D%E4%...

  • js new操作符做了什么

    var Func = function(){}; var func = new Func (); 1、首先创建了一...

  • new操作符到底做了什么?

    我们平常在使用实例话一个对象的时候,比如var a = new B(), 在new的过程中到底经历了四步过程: v...

  • new操作步骤

    js中的new()到底做了些什么?? 要创建 Person 的新实例,必须使用 new 操作符。以这种方式调用构造...

  • JS手动实现一个new操作

    要手动实现一个 new 操作符,首先要知道 new 操作符都做了什么事,即构造函数的内部原理:1.创建一个新对象;...

网友评论

      本文标题:New操作符做了什么

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