new 这个关键字到底做了什么??

186 阅读2分钟

今天讲一下new这个关键字,到底做了什么呢?下面我们来分析一下吧

1. 首先我们看一个梨子

有个需求,要求创建几个相同的对象,虽然对象的键是相同的,但是值不同

let obj  = {name:"张三",age:18}
let obj1 = {name:"李四",age:20}
let obj2 = {name:"王五",age:22}

缺点: 显而易见,代码冗余倒是一方面,另一方面就是容易造成变量的重复

2. 有没有更简单的方式呢

或许大家第二步就想到了,封装函数,yes 恭喜 ,那下面我们来封装函数吧,封装函数其实很简单,大家要想到那些地方是相同的,那些地方是不同的,不同的地方我们就需要放入形参里面, 显而易见, 值不一样,所以我们就需要把值当做形参传入

function createObj(name,age) {
    // 创建对象 
     let obj = {}
    // 赋值
    obj.name = name
    obj.age = age
    
    return obj
}

let obj1 = createObj("张三",18)
let obj2 = createObj("李四",20)
let obj3 = createObj("王五",22)

缺点: 还是太冗余,这就是最基础的最简单的封装是吧

构造函数

我们这里注意一个小细节,构造函数注意大写

function CreateObj(name,age) {
   this.name = name
   this.age = age
}

let obj1 = new CreateObj("张三",18)
let obj2 = new CreateObj("李四",20)
let obj3 = new CreateObj("王五",22)

总结

我们想知道new具体做了什么 实战一下

function person () {}

console.log(person () )      //undefined
console.log(new person () )  // 空对象

我们在结合之前的,做一个总结

大概就做了四步 , 大家可以对着上面的代码理解一下

  1. 创建一个空对象
  2. 将this指向这个对象
  3. 对象赋值
  4. 返回这个对象

好了,这边已经给大家介绍到这里,以上是我自己的理解,希望可以帮到大家, 欢迎留言我这边一定会第一时间给大家解答,喜欢的可以点赞收藏
🐣---->🦅         还需努力!大家一起进步!!!