1、Object.assign()
通过复制一个或多个对象来创建一个新的对象。
const obj = { a: 1 };
const obj2= { b: 1 };
const copy = Object.assign(obj, obj2);
console.log(obj,copy); // { a: 1,b:1 } ,{ a: 1,b:1 }
tips:Object.assign()只能拷贝可枚举属性,为浅拷贝,且目标对象也发生变化。
2、Object.keys()、Object.values()
返回给定对象自身可枚举属性名称、以及可枚举值的数组。
3、Object.create()
使用指定的原型对象和属性创建一个新对象。
var obj;
obj1 = Object.create(null); // 创建一个原型为null的空对象
obj2 = Object.create(Object.prototype);// 以字面量方式创建的空对象
obj3 = Object.create(Object.prototype, {
// foo会成为所创建对象的数据属性
foo: {
writable:true,
configurable:true,
value: "hello"
},
// bar会成为所创建对象的访问器属性
bar: {
configurable: false,
get: function() { return 111 },
set: function(value) {
console.log("Setting `o.bar` to", value);
}
}
});
4、Object.defineProperty()、Object.defineProperties()
给对象添加一个、多个属性并指定该属性的配置。
//1、一个的时候:
var obj= {};
// 在对象中添加一个属性与数据描述符的示例
Object.defineProperty(obj, "val", {
value : 11,
writable : true,
enumerable : true,
configurable : true
});
//2、多个的时候:
var obj2 = {};
Object.defineProperties(obj2, {
'p1': {
value: 22,
writable: true
},
'p2': {
value: 33,
writable: false
}
});
tips:默认情况下,使用 Object.defineProperty() 添加的属性值是不可修改的。
5、Object.entries()
返回给定对象自身可枚举属性的 [key, va