js 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 是否存在于另一个对象的原型上
内容会不断更新,欢迎批评指正。
分类:
# JavaScript
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!