1.Object.assign()
Object.assign()是通过复制一个或多个对象,创建一个新对象。
var source1 = { a: 1 };
var source2 = { b: 2 };
Object.assign(source1,source2);
// {a: 1, b: 2}
注:
1.如果目标对象和源对象有同名属性,或多个源对象有同名属性,后面的属性会覆盖前面的属性。
2.如果只有一个参数,Object.assign会直接返回该参数。
var source1 = { a: 1, b: 2 };
var source2 = { b: 3, a: 4 };
Object.assign(source1, source2);
// { a: 4, b: 3}
var obj = {a: 1};
Object.assign(obj) === obj
// true
2.Object.keys()
Object.keys()传入一个对象,返回的是一个数组,数组中是这个对象的所有属性名称。
var source1 = { a: 1, b: 2 };
Object.keys(source1)
// ['a', 'b']
3.Object.values()
Object.values()方法也是返回一个数组,数组中是传入对象的键值。
var source1 = { a: 1, b: 2 };
Object.values(source1)
// [1,2 ]
注:如果传入的参数是一个字符串,会返回各个字符组成的数组。
Object.values('ABC')
// ['A', 'B', 'C']
4.Object.is()
Object.is()判断两个值是否相同,返回true或false。
Object.is(1, 1) // true
Object.is('1',1) // false
//注该函数与==运算符不同,不会强制转换任何类型
Object.is(+0, -0) // false
Object.is(NaN, NaN) // true
Object.is(NaN, 0/0) // true
5.Object.entries()
Object.entries()传入一个对象,返回一个由对象自身可枚举属性的键值对数组。
var source1 = { a: 1, b: 2 };
Object.entries(source1)
// [['a', 1], ['b', 2] ]
6.Object.freeze()
Object.freeze()方法,冻结一个对象,不能对这个对象增删改。
const obj = { a: 1, b: { c: 2 }};
console.log(obj.a) // 1
console.log(obj.b.c) // 2
obj.a = 3
obj.b.c = 4
console.log(obj.a) // 3
console.log(obj.b.c) // 4
//Oject.isFrozen: 判断一个对象是否已经被冻结
Object.isFrozen(obj) // false
Object.freeze(obj)
Object.isFrozen(obj) // true
obj.a = 5
obj.b.c = 6
console.log(obj.a) // 3
//Object.freeze()方法只能冻结一层
console.log(obj.b.c) // 6
7.Object.defineProperty()
Object.defineProperty()方法,定义或修改一个对象中的属性
const obj = new Object()
Object.defineProperty(obj, 'name', {
configurable: false,
writable: false,
enumerable: true,
value: '一个不能被修改的名字'})
console.log(obj.name) // '一个不能被修改的名字'
**8.Object.defineProperties() **
Object.defineProperties()方法,定义或修改一个对象中的多个属性
const obj2 = new Object()
Object.defineProperties(obj2, {
name: {
writable: true,
value: '张三'
},
Name: {
get: function() {
return `${this.name}先生`
},
set: function(value) {
this.name = value || '未知'
}
}})
console.log(obj2.name) // 张三
console.log(obj2.Name) // 张三先生