js中的new()到底做了些什么

我们在日常的开发中经常会用到 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" 操作符来执行。

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


// 构造函数Person

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

let p = new Person('王新焱', 33)

console.log(p) // { name: '王新焱', age: 33 }

p.constructor === Person // true

p.__proto__ === Person.prototype // true

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值