主题
Object 静态方法
assign()
Object.assign() 静态方法将一个或者多个源对象中所有可枚举的自有属性复制到目标对象,并返回修改后的目标对象。
语法:
js
Object.assign(target, ...sources)
create()
defineProperties()
Object.defineProperties() 静态方法直接在一个对象上定义新的属性或修改现有属性,并返回该对象。
语法:
js
Object.defineProperties(obj, props)
defineProperty()
Object.defineProperty() 静态方法会直接在一个对象上定义一个新属性,或修改其现有属性,并返回此对象。
语法:
js
Object.defineProperty(obj, prop, descriptor)
entries()
Object.entries() 静态方法返回一个数组,包含给定对象自有的可枚举字符串键属性的键值对。
语法:
js
Object.entries(obj)
freeze()
Object.freeze() 静态方法可以使一个对象被冻结。
- 冻结对象可以防止扩展,并使现有的属性不可写入和不可配置。
- 被冻结的对象不能再被更改:不能添加新的属性,不能移除现有的属性,不能更改它们的可枚举性、可配置性、可写性或值,对象的原型也不能被重新指定。
freeze()
返回与传入的对象相同的对象。
语法:
js
Object.freeze(obj)
示例:
js
const obj = {
prop: 42,
}
Object.freeze(obj)
// 严格模式下会抛出错误
obj.prop = 33
console.log(obj.prop) // 输出:42
提示
可以通过 Object.isFrozen()
方法来检查一个对象是否被冻结。
fromEntries()
getOwnPropertyDescriptor()
Object.getOwnPropertyDescriptor() 静态方法返回一个对象,该对象描述给定对象上特定属性(即直接存在于对象上而不在对象的原型链中的属性)的配置。返回的对象是可变的,但对其进行更改不会影响原始属性的配置。
语法:
js
Object.getOwnPropertyDescriptor(obj, prop)
getOwnPropertyDescriptors()
Object.getOwnPropertyDescriptors() 静态方法返回给定对象的所有自有属性描述符。
语法:
js
Object.getOwnPropertyDescriptors(obj)
getOwnPropertyNames()
getOwnPropertySymbols()
getPrototypeOf()
groupBy()
hasOwn()
Object.hasOwn() 旨在取代 Object.prototype.hasOwnProperty():
- 如果指定的对象自身有指定的属性,该方法返回 true。
- 如果属性是继承的或者不存在,该方法返回 false。
语法:
js
Object.hasOwn(obj, prop)
is()
Object.is() 静态方法确定两个值是否为相同值。
语法:
js
Object.is(value1, value2)
isExtensible()
isFrozen()
Object.isFrozen()
静态方法判断一个对象是否被冻结。
语法:
js
Object.isFrozen(obj)
示例:
js
const object1 = {
property1: 42,
}
console.log(Object.isFrozen(object1)) // false
Object.freeze(object1)
console.log(Object.isFrozen(object1)) // true
isSealed()
Object.isSealed()
静态方法判断一个对象是否被密封。
示例:
js
const object1 = {
property1: 42,
}
console.log(Object.isSealed(object1)) // false
Object.seal(object1)
console.log(Object.isSealed(object1)) // true
keys()
Object.keys() 静态方法返回一个由给定对象自身的可枚举的字符串键属性名组成的数组。
语法:
js
Object.keys(obj)
preventExtensions()
seal()
Object.seal()
静态方法密封一个对象。
- 密封一个对象会阻止其扩展并且使得现有属性不可配置。密封对象有一组固定的属性:不能添加新属性、不能删除现有属性或更改其可枚举性和可配置性、不能重新分配其原型。
- 只要现有属性的值是可写的,它们仍然可以更改。
seal()
返回传入的同一对象。
语法:
js
Object.seal(obj)
示例:
js
const object1 = {
property1: 42,
}
Object.seal(object1)
object1.property1 = 33
console.log(object1.property1) // 输出:33
delete object1.property1 // 密封对象无法删除属性
console.log(object1.property1) // 输出:33
setPrototypeOf()
values()
Object.values() 静态方法返回一个给定对象的自有可枚举字符串键属性值组成的数组。
语法:
js
Object.values(obj)