1 Object.assign()
通过复制一个或者多个对象的所有可枚举属性来创建一个新的对象,返回目标对象。
浅拷贝:只复制引用,不复制对象本身
let obj1={a:0,b:{c:0}}
let obj2=Object.assign({},obj1)
console.log(JSON.stringify(obj2)) // {"a":0,"b":{"c":0}}
obj1.a=1
console.log(JSON.stringify(obj1)) // {"a":1,"b":{"c":0}}
console.log(JSON.stringify(obj2)) // {"a":0,"b":{"c":0}}
obj2.a=2
console.log(JSON.stringify(obj1)) // {"a":1,"b":{"c":0}}
console.log(JSON.stringify(obj2)) // {"a":2,"b":{"c":0}}
obj1.b.c=3
console.log(JSON.stringify(obj1)) // {"a":1,"b":{"c":3}}
console.log(JSON.stringify(obj2)) // {"a":2,"b":{"c":3}}
obj2.b.c=4
console.log(JSON.stringify(obj1)) // {"a":1,"b":{"c":4}}
console.log(JSON.stringify(obj2)) // {"a":2,"b":{"c":4}}
2 Object.create()
使用指定的原型对象和属性创建一个新对象。
let obj1={a:0}
let obj2=Object.create(obj1)
obj2.a // 0
3 Object.defineProperty()
直接在一个对象上定义一个新属性,或者修改一个对象的现有属性, 并返回这个对象。
语法
Object.defineProperty(obj,prop,descriptor)
4 Object.entries()
返回一个给定对象自身可枚举
属性的键值对数组
,其排列与使用 for…in 循环遍历该对象时返回的顺序一致(区别在于 for-in 循环还会枚举原型链中的属性)。
5 Object.getOwnPropertyDescriptor()
返回指定对象上一个自有属性对应的属性描述符。(自有属性指的是直接赋予该对象的属性,不需要从原型链上进行查找的属性
)
Object.getOwnPropertyDescriptor(obj, prop)
6 Object.getOwnPropertyNames()
返回一个由指定对象的所有自身属性的属性名(包括不可枚举属性但不包括Symbol值作为名称的属性)组成的数组。
7 Object.getOwnPropertySymbols()
返回一个给定对象自身的所有 Symbol 属性的数组。
8 Object.getPrototypeOf()
返回指定对象的原型(内部[[Prototype]]属性的值)。
9 Object.setPrototypeOf()
设置对象的原型(即内部 [[Prototype]] 属性)。
10 Object.values()
返回给定对象自身可枚举值的数组。
参考链接 https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object