Object
Object 构造函数用来包装成对象.
概述
Object 构造函数为给定值创建一个对象包装器. 如果给定值是 null 或 *undefined, 将会创建并返回一个空对象. 否则, 将返回一个与给定值对应类型的对象.
当以非构造函数形式被调用时, Object 等同于 new Object()
.
构造函数方法
Object.keys()
描述 :
获取给定对象自身可枚举属性(字符串)组成的数组.
Object.keys(target)
target
: 目标对象.
1 | let obj = { |
Object.values()
描述 :
获取给定对象自身可枚举属性值组成的数组.
Object.values(target)
target
: 目标对象.
1 | let obj = { |
Object.entries()
描述 :
由给定对象自身可枚举属性的键值对数组组成的数组. 属性的顺序与通过 for...in
循环对象的属性值所给出的顺序相同.
语法 :
Object.entries(target)
target
: 目标对象.
1 | let obj_1 = { |
Object.create()
描述 :
创建一个新对象, 并将内部属性 [[Prototype]]
指向源对象.
语法 :
Object.create(sources[, Properties])
sources
: 提供原型的源对象.Properties
: 为新对象添加属性, 规则如同 Object.defineProperties(obj, Prototype)
.
1 | let obj_1 = { |
Object.assign()
描述 :
将源目标(一个或多个)对象中的所有可枚举属性值复制到目标对象中. 如果目标对象和源对象中存在相同的属性(键), 后者的属性将覆盖前者的属性. 最终返回目标对象.
语法 :
Object.assign(target, ..sources)
target
: 目标对象.sources
: 源对象.
1 | let obj_1 = { |
Object.defineProperty()
描述 :
为对象定义一个新属性或修改现有属性.
语法 :
Object.defineProperty(target, prop, descriptor)
target
: 要在其上定义或修改属性的目标对象.prop
: 要定义或修改的属性属性名称.descriptor
: 将被定义或修改的属性描述符.
1 | let obj = {} |
Object.defineProperties()
描述 :
为对象定义一个新属性或修改现有属性.
语法 :
Object.defineProperties(target, propsDescriptor)
target
: 要在其上定义或修改属性的目标对象.propsDescriptor
: 将被定义或修改的属性描述符对象.
1 | let obj = {} |
Object.getOwnPropertyDescriptor()
描述 :
获取指定对象上某个自有属性对应的属性描述符.(自有属性即直接赋予该对象的属性, 非原型链继上查找到的属性)
语法 :
Object.getOwnPropertyDescriptor(target, prop)
target
: 目标对象.prop
: 目标对象的属性名称.
1 | let obj_1 = { |
Object.getOwnPropertyNames()
描述 :
获取指定对象的所有自有属性的属性名(包括不可枚举属性但不包括 Symbol 值作为名称的属性)组成的数组.
语法 :
Object.getOwnPropertyNames(target)
target
: 目标对象.prop
: 目标对象的属性名称.
1 | let obj_1 = { |
Object.getOwnPropertySymbols()
描述 :
获取给定对象所有的 Symbol 属性的数组.
语法 :
Object.getOwnPropertyNames(target)
target
: 目标对象.
1 | let obj = {} |
Object.preventExtensions()
描述 :
使得对象变得不可扩展. 即设置对象内部 [[Extensible]]
值为 false.
Object.preventExtensions(target)
target
: 目标对象.
1 | let obj_1 = { |
Object.seal()
描述 :
使得对象变得不可扩展. 即设置对象内部 [[Extensible]]
值为 false. 对象属性的 [[Configurable]]
为 false.
Object.seal(target)
target
: 目标对象.
1 | let obj_1 = { |
Object.freeze()
描述 :
冻结一个对象, 将不能向该对象添加新的属性, 不能修改、删除已有属性, 以及不能修改已有属性的可枚举性、可配置性、可写性. 如果属性是对象, 除非被冻结, 否则也是可以修改的. 数组作为对象, 被冻结后, 元素不可被修改. [[Extensible]]
内部属性为 false. 对象属性的 [[Configurable]]
为 false. 若是对象属性描述符为数据描述符, 则对象属性的 [[Writable]]
为 false.
语法 :
Object.freeze(target)
target
: 目标对象.
1 | let obj_1 = { |
Object.isExtensible()
描述 :
判断一个对象是否可扩展的. 即是否可添加新的属性. 新对象 [[Extensible]]
默认为 true . Object.preventExtensions(target), Object.seal(target) 或 Object.freeze(target) 可将目标对象内部属性 [[Extensible]]
置为 false.
语法 :
Object.isExtensible(target)
target
: 目标对象.
1 | let obj = {} |
OObject.isSealed()
描述 :
判断一个对象是否被密封. 若对象的内部属性 [[Extensible]]
为 false, 返回 true. 若对象属性的 [[Configurable]]
为 true, 返回 false. 否则, 返回 false.
语法 :
Object.isSealed(target)
target
: 目标对象.
1 | let obj = {} |
Object.isFrozen()
描述 :
判断一个对象是否被冻结. 若对象的内部属性 [[Extensible]]
为 false, 返回 true. 若对象属性的 [[Configurable]]
为 true, 返回 false. 若是对象属性描述符为数据描述符, 对象属性的 [[Writable]]
为 true, 返回 false. 否则, 返回 false.
语法 :
Object.isFrozen(target)
target
: 目标对象.
1 | let obj = {} |
Object.setPrototypeOf()
描述 :
使得对象变得不可扩展. 即设置对象内部 [[Extensible]]
值为 false. 对象属性的 [[Configurable]]
为 false.
Object.setPrototypeOf(target, prototype)
target
: 目标对象.prototype
: 原型对象(对象或 null).
1 | let obj_1 = {a: 1} |
Object.getPrototypeOf()
描述 :
获取给定对象的原型(内部 [[Prototype]]
属性的值). 若没有即成属性, 则返回 null.
语法 :
Object.getOwnPropertyNames(target)
target
: 目标对象.
1 | function Person() {} |
Object.is()
描述 :
判断两个值是否相等. 规则和抽象相等、严格相等不一样.
语法 :
Object.is(target1, target2)
target
: 需要比较的两个值.
1 | Object.is(undefined, undefined) // true |