Object.assign
方法实行的是浅拷贝,而不是深拷贝。
也就是说,如果源对象某个属性的值是对象,那么目标对象拷贝得到的是这个对象的引用。
同名属性会替换
Object.create(parent, {z : { writable:true, configurable:true, value:"newAdd"} })
使用指定的原型对象及其属性去创建一个新的对象
Object.defineProperties(obj , props)
直接在一个对象上定义新的属性或修改现有属性,并返回该对象
Object.defineProperty(Object , ‘ is ’ ,{value:’a’, configurable:true,enumerable: false, writable: true})
在一个对象上定义一个新属性,或者修改一个对象的现有属性, 并返回这个对象
Object.keys(obj)
返回一个由一个给定对象的自身可枚举属性组成的数组,排列 顺序和使用for…in 循环遍历该对象时返回的顺序一致。与for in 的区别是for in循环会枚举原型链上的属性。
Object.values(obj)
方法返回一个给定对象自己的所有可枚举属性值的数组,值 的顺序与使用for…in 循环的顺序相同
Object.entries(obj)
返回一个给定对象自身可枚举属性的键值对数组
obj.hasOwnProperty('name')
判断对象自身属性中是否具有指定的属性
Object.getOwnPropertyDescriptor(obj,prop)
返回指定对象上一个自有属性对应的属性描述符。
(自有属性指的是直接赋予该对象的属性,不需要从原型链上 进行查找的属性).
如果指定的属性存在于对象上,则返回其属性描述符对象,否则 返回undefined。
Object.getPrototypeOf()
返回指定对象的原型(内部[[Prototype]]属性的值,即__proto__,而非对象的prototype)
Object. isPrototypeOf()
判断一个对象是否存在于另一个对象的原型链上
Object.setPrototypeOf(obj,prototype)
设置对象的原型对象
Object.is() 判断两个值是否相同。
如果两个值都是undefined/null/true/false/NaN/指向同一个对象,则两个值相同