console.log('1.Object.assign()方法的作用是浅拷贝一个对象,合并对象,合并具有相同属性的对象');
var obj = {
a:1,
name: {
'ming': 'fan',
}
};
var copy = Object.assign({},obj);
obj.name.ming = 'yang';
console.log(obj.name.ming);
console.log(copy.name.ming);
// 关于深拷贝,可以使用 JSON.parse(JSON.stringify(obj1)); 缺点:无法复制函数,原型链没了。
console.log('2.Object.create()方法的作用是创建一个新对象,并且可以继承父类函数的原型对象和属性');
var parent = {
getName: function() {
return this.name;
}
};
var child = Object.create(parent, {
name: {value: 'yang'}
});
console.log(child);
console.log('3.Object.entries()方法返回一个数组,其元素是与直接在object上找到的可枚举属性键值对相对应的数组。属性的顺序与通过手动循环对象的属性值所给出的顺序相同');
const anObj = { 100: 'a', 2: 'b', 7: 'c' };
console.log(Object.entries(anObj)); // [ ['2', 'b'], ['7', 'c'], ['100', 'a'] ]
Object.entries(obj).forEach(([key, value]) => {
console.log(`${key} ${value}`); // "a 5", "b 7", "c 9"
});
console.log('4.Object.freeze()方法的作用冻结一个数组或者对象,被冻结之后就不能修改了');
console.log('5.Object.is()方法的作用判断两个值是否相同');
console.log(Object.is([],[])); //false
console.log(Object.is(undefined,undefined)); //ture
console.log(Object.keys({'a':1,'b':'string'})); // a,b 输出key值