1.Object.assgin(target,source1,source2)
该方法主要用于对象的合并,将源对象source的所有可枚举属性合并到目标对象target上,此方法只拷贝源对象的自身属性,不拷贝继承的属性
let obj1={ name:'wq', age:21 }
let obj2={ name:'zy', age:21,love:['play','drink']}
Object.assign(obj1,obj2) // obj1={name:'zy', age:21,love:['play','drink']}
2.Object.defineProperties(obj,props)
直接在一个对象上定义新的属性或修改现有属性,并返回该对象。
let obj = {name:'wq'}
Object.defineProperties(obj,{
'name':{
value:'wsc',
writable:'false'
},
'age':{
value:20
}
})
3.Object.defineProperty(obj,prop,descriptor)
在一个对象上定义一个新属性,或者修改一个对象的现有属性, 并返回这个对象。
let obj = {name:'wq'}
Object.defineProperty(obj,'name',{
value:'hsh'
})
4.Object.keys(obj)
返回一个由一个给定对象的自身可枚举属性组成的数组
let obj = { foo: "bar", baz: 42 },
keys = Object.keys(obj);
console.log(keys);
// ["foo","baz"]
5.Object.values(obj)
方法返回一个给定对象自己的所有可枚举属性值的数组
var obj = { 0: 'a', 1: 'b', 2: 'c' };
console.log(Object.values(obj)); // ['a', 'b', 'c']
6.Object.entries(obj)
返回一个给定对象自身可枚举属性的键值对数组
const obj = { foo: 'bar', baz: 42 };
console.log(Object.entries(obj)); // [ ['foo', 'bar'], ['baz', 42] ]
7.obj.hasOwnProperty(属性名)
判断对象自身属性中是否具有指定的属性。
const obj6 = { foo: 'bar', baz: 42,name:{age:{hello:'world'}} };
obj6.hasOwnProperty('foo'); // true
8.Object.getOwnPropertyNames(obj)
返回一个由指定对象的所有自身属性的属性名(包括不可枚举属性但不包括Symbol值作为名称的属性)组成的数组。
var obj = { 0: "a", 1: "b", 2: "c"};
Object.getOwnPropertyNames(obj).forEach(function(val) {
console.log(val);
}); // 0,1,2
9.Object.is(a,b)
判断两个值是否相同
特列:
Object.is(NaN,0/0) // true
Object.is(NaN,NaN) //true
Object.is(0, -0) // false
10.Object.freeze(obj)
冻结一个对象,冻结指的是不能向这个对象添加新的属性,不能修改其已有属性的值,不能删除已有属性,以及不能修改该对象已有属性的可枚举性、可配置性、可写性。也就是说,这个对象永远是不可变的
11.Object.isFrozen(obj)
判断一个对象是否被冻结