js Object 对象 属性和方法

MDN Object

  • Object.keys 返回对象的自身可枚举属性组成的数组
  • Object.values
  • Object.entries

Object.fromEntries(entries)

  • Object.getOwnPropertyNames()
    包括不可枚举属性但不包括 Symbol 值作为名称的属性
    返回数组
  • Object.getOwnPropertySymbols()

propertyIsEnumerable 属性是否可枚举

toString

[object 构造函数]

valueOf 原始值

当遇到需要对象的原始值时,JavaScript 会自动调用它
每个内置的核心对象都会覆盖此方法以返回适当的值。如果对象没有原始值,则 valueOf 将返回对象本身。

对象返回值
Array返回数组对象本身。
Boolean布尔值。
Date存储的时间是从 1970 年 1 月 1 日午夜开始计的毫秒数 UTC。
Function函数本身。
Number数字值。
Object对象本身。这是默认情况。
String字符串值。
Math 和 Error 对象没有 valueOf 方法。

使用 valueOf 将内置对象转换为原始值

toLocaleString

被用于派生对象为了特定语言环境的目的而重载使用

hasOwnProperty / Object.hasOwn 判断对象是否具备属性

Object.hasOwn 意图取代 hasOwnProperty

Object.assign() 对象拼接

  • target
  • sources

针对 Object.hasOwnProperty() 返回 true 的属性
相同属性,后者覆盖前者
注:不会完整复制描述信息,如this

Object.create() 基于已有对象(原型)创建

第二个参数可额外配置属性

Object.defineProperty() / Object.defineProperties() 新增/修改属性

  • obj
  • prop / props
  • 属性描述符
    • configurable 可改可删 默认false
    • enumerable 可枚举属性 默认false
    • value
    • writable
    • get
    • set

Object.getOwnPropertyDescriptor(obj, prop) 获取属性描述符对象

Object.getOwnPropertyDescriptors() 获取所有属性的

复制对象

const p1 = {
  a: 'y',
  b: 'b',
  get name() {
    return `${this.a} ${this.b}`
  }
}
const descriptions = Object.getOwnPropertyDescriptors(p1)
const  p2 = Object.defineProperties({}, descriptions)

p2.a = 'z'
p2.name // z d

Object.preventExtensions 阻止扩展

不可新增属性

Object.isExtensible()
Object.preventExtensions,Object.seal 或 Object.freeze 方法都可以标记一个对象为不可扩展

Object.seal() 封闭一个对象

不可新增属性,不可修改配置

Object.isSealed()

Object.freeze() 冻结对象

不可新增属性,不可修改配置,不可修改值(配置可写的情况下)

Object.isFrozen()

Object.is()

  • 值相等
  • 都是 undefined
  • 都是 null
  • 都是 +0
  • 都是 -0
  • 都是 NaN

== 运算符在判断相等前对两边的变量(如果它们不是同一类型)进行强制转换(这种行为将 "" == false 判断为 true),而 Object.is 不会强制转换两边的值
=== 运算符(也包括 == 运算符)将数字 -0 和 +0 视为相等,而将 Number.NaN 与 NaN 视为不相等

Object.getPrototypeOf() 获取原型

Object.setPrototypeOf() 设置原型

isPrototypeOf 是否存在于另一个对象的原型上

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值