学习前端第二十五天(构造器和操作符‘new’,可选链‘?.’,symbol类型)

一、构造器和操作符‘new’

构造函数:

  1. 命名以大写字母开头。
  2. 只能由 "new" 操作符来执行。

当一个函数被使用 new 操作符执行时,它按照以下步骤:

  1. 一个新的空对象被创建并分配给 this
  2. 函数体执行。通常它会修改 this,为其添加新的属性。
  3. 返回 this 的值。

如果“new”函数有return语句,那么带有对象的 return 返回该对象,在所有其他情况下返回 this

主要目的 —— 实现可重用的对象创建代码。

二、可选链‘?.’

一种访问嵌套对象属性的安全的方式。即使中间的属性不存在,也不会出现错误。

如果可选链 ?. 前面的值为 undefined 或者 null,它会停止运算并返回 undefined

例如 value?.prop

  • 如果 value 存在,则结果与 value.prop 相同,
  • 否则(当 value 为 undefined/null 时)则返回 undefined

?. 语法使其前面的值成为可选值,但不会对其后面的起作用。

变体:?.()   ?.[]

user.admin?.() ?.() 用于调用一个可能不存在的函数。

user?.[key?.[ ]允许从一个可能不存在的对象上安全地读取属性

三、symbol类型

可以使用 Symbol() 来创建这种类型的值

let id = Symbol("id");

id 是描述为 "id" 的 symbol(一种数据)

即使我们创建了许多具有相同描述的 symbol,它们的值也是不同。

symbol 允许我们创建对象的“隐藏”属性,代码的任何其他部分都不能意外访问或重写这些属性。

如果我们要在对象 {...} 中使用 symbol,则需要使用方括号把它括起来。

[id]: 123 // 而不是 "id":123

symbol 属性不参与 for..in 循环。

Object.assign() 可以实现复制对象中的Symbol

全局 symbol 注册表。可以在其中创建 symbol 并在稍后访问它们,它可以确保每次访问相同名字的 symbol 时,返回的都是相同的 symbol。

要从注册表中读取(不存在则创建)symbol,使用 Symbol.for(key)

可以使用 Symbol.keyFor(sym),返回一个symbol名字

同(sym.description)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值