js中的new()到底做了些什么
创始人
2025-05-29 08:27:11
0

我们在日常的开发中经常会用到 new 操作符,来看看它到底做了什么事情;

以及它的实现原理 javascript 中,创建对象有两种方式:①.对象字面量   ②.new 表达式

// 字面量形式
let person = {
   name: '王新焱',
   age: 33
}

// 构造函数形式 (new)
function Person(name, age) {
  this.name = name
  this.age = age
}

let  person  = new Person()

对象字面量写法缺点是每创建一个新的对象都需要写出完整的定义语句,不便于创建大量相同类型的对象,不利于使用继承等高级特性。

new 表达式是配合构造函数使用的,通过 new 一个构造函数去继承构造函数的属性。

创建 Person 新实例,必须使用 new 操作符。这种方式调用构造函数会经历以下 4个步骤:
①.创建一个空的简单 JavaScript 对象(即 {})
②.为新创建的对象添加属性 __proto__,将该属性链接至构造函数的原型对象
③.将新创建的对象作为 this 的上下文
④.返回新对象

什么是构造函数?

通过 new 函数名 来实例化对象的函数叫构造函数。构造函数与普通函数并没有太大差异,为了区分我们将函数名首字母大写的函数作为构造函数,主要作用就是构造函数通过new关键字创建对象为初始化的对象添加属性和方法。


构造函数在技术上是常规函数。不过有两个约定:

①.它们的命名以大写字母开头。
②.它们只能由 "new" 操作符来执行。

以下是一个构造函数示例:


// 构造函数Personfunction Person(name, age) {this.name = namethis.age = age
}let p = new Person('王新焱', 33)console.log(p) // { name: '王新焱', age: 33 }p.constructor === Person // truep.__proto__ === Person.prototype // true

相关内容

热门资讯

【PdgCntEditor】解... 一、问题背景 大部分的图书对应的PDF,目录中的页码并非PDF中直接索引的页码...
修复 爱普生 EPSON L4... L4151 L4153 L4156 L4158 L4163 L4165 L4166 L4168 L4...
在Word、WPS中插入AxM... 引言 我最近需要写一些文章,在排版时发现AxMath插入的公式竟然会导致行间距异常&#...
监控摄像头接入GB28181平... 流程简介将监控摄像头的视频在网站和APP中直播,要解决的几个问题是:1&...
protocol buffer... 目录 目录 什么是protocol buffer 1.protobuf 1.1安装  1.2使用...
Windows10添加群晖磁盘... 在使用群晖NAS时,我们需要通过本地映射的方式把NAS映射成本地的一块磁盘使用。 通过...
牛客计算器的改良(Python... 文章目录1.题目描述2.输入描述:3.输出描述:4.示例15.分析6.代码7.结语 链接࿱...
【前端】‘??‘与‘||‘有什... 0 问题 经常写const data = res.data.a ?? ''或者const d...
正大杯|市调大赛|2023备赛... 关键信息 同时随着精细化养宠趋势的深入,宠物消费类目日渐丰富。 本报告通过 Niuco...
文本生成视频Make-A-Vi... Meta公司(原Facebook)在今年9月29日首次推出一款人工智能系...