Object几乎是所有对象的原型,存储键值对
Object构造函数有许多方法,与Reflect中许多方法类似

Object.assign()

进行赋值,将源对象复制到目标对象中,并且会覆盖相同的属性
Object.assign(target, ...sources)
target目标对象。sources源对象 返回值为更改后的目标对象 
但不能实现深拷贝

Object.create()

使用指定的原型对象和属性创建一个新对象。类似于Reflect.construct()
function OneClass(num) {
    this.name = 'one';
    this.id=num;
}
 
function OtherClass(num) {
    this.name = 'other';
    this.oid=num;
}
 
// 创建一个对象:
var d1 = Reflect.construct(OneClass, [1],OtherClass);
var d2 = Object.create(OneClass.prototype);
OtherClass.apply(d2,[1])
console.log(d1);//OtherClass {name: "one", id: 1}
console.log(d2);//OneClass {name: "other", oid: 1}

Object.defineProperty()

给对象添加一个属性并指定该属性的配置,并返回该对象
类似于Reflect.defineProperty() ,但Reflect返回的是boolean

Object.defineProperties()

给对象添加多个属性并分别指定它们的配置。

Object.entries()总记不住的一个

将 Object 中的键值对 转换为 对应的数组 返回转换后的数组,在遍历中很有用

Object.freeze()

冻结对象:其他代码不能删除或更改任何属性。

Object.getOwnPropertyDescriptor()

与Reflect.getOwnPropertyDescriptor()类似,返回对象指定的属性配置。

Object.getOwnPropertyNames()

返回一个数组,它包含了指定对象所有的可枚举或不可枚举的属性名。

Object.getOwnPropertySymbols()

返回一个数组,它包含了指定对象自身所有的符号属性。

Object.getPrototypeOf()

返回指定对象的原型对象。

Object.is()

比较两个值是否相同(与==和===不同),

如果下列任何一项成立,则两个值相同:

  • 两个值都是 undefined
  • 两个值都是 null
  • 两个值都是 true 或者都是 false
  • 两个值是由相同个数的字符按照相同的顺序组成的字符串
  • 两个值指向同一个对象
  • 两个值都是数字并且
    • 都是正零 +0
    • 都是负零 -0
    • 都是 NaN
    • 都是除零和 NaN 外的其它同一个数字

Object.isExtensible()

判断对象是否可扩展,类似于Reflect.isExtensible()

Object.isFrozen()

判断对象是否已经冻结。

Object.seal()

防止其他代码删除对象的属性

Object.isSealed()

判断对象是否已经密封。

Object.keys()

返回一个所有元素为字符串的数组,其元素来自于object中的属性名字,即key值。类似于Reflect.ownKeys()

Object.preventExtensions()

防止对象的任何扩展。

Object.setPrototypeOf()

设置对象的原型(即内部 [[Prototype]] 属性)。

Object.values()

返回一个数组,其元素是object中各属性的值 就是values


补充知识:

props

要定义其可枚举属性或修改的属性描述符的对象。对象中存在的属性描述符主要有两种:数据描述符和访问器描述符(更多详情,请参阅Object.defineProperty())。描述符具有以下键:
configurable
true 当且仅当该属性描述符的类型可以被改变并且该属性可以从对应对象中删除。
默认为 false
enumerable
true 当且仅当在枚举相应对象上的属性时该属性显现。
默认为 false
value
与属性关联的值。可以是任何有效的JavaScript值(数字,对象,函数等)。
(这个要重点理解一下)
默认为 undefined
writable
true当且仅当与该属性相关联的值可以用assignment operator改变时。
默认为 false
get
作为该属性的 getter 函数,如果没有 getter 则为undefined。函数返回值将被用作属性的值。
默认为 undefined
get
作为该属性的 getter 函数,如果没有 getter 则为undefined。函数返回值将被用作属性的值。
默认为 undefined