今天讲一下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 () ) // 空对象
我们在结合之前的,做一个总结
大概就做了四步 , 大家可以对着上面的代码理解一下
- 创建一个空对象
- 将this指向这个对象
- 对象赋值
- 返回这个对象
好了,这边已经给大家介绍到这里,以上是我自己的理解,希望可以帮到大家, 欢迎留言我这边一定会第一时间给大家解答,喜欢的可以点赞收藏
🐣---->🦅 还需努力!大家一起进步!!!