Object.is()
比较两个值是否相等
Object.is('val', 'val')// true
Object.is({}, {})// false
+0 === -0 //true
NaN === NaN // false
Object.is(+0, -0) // false
Object.is(NaN, NaN) // true
Object.assign()
用于对象的合并,将源对象(source)的所有可枚举属性,复制到目标对象(target)
const obj = { x: 11 };
const obj1 = { y: 21 };
const obj2 = { z: 31 };
Object.assign(obj,obj1,obj2); // {x:11, y:21, z:31}
注意
Object.assign()
方法实行的是浅拷贝- 同名属性将会替换
Object.assign()
可以用来处理数组,但是会把数组视为对象。会发生替换Object.assign()
处理函数时,将求值后再复制
Object.getOwnPropertyDescriptors()
返回指定对象所有自身属性(非继承属性)的描述对象。
const obj = {
val:111
};
Object.getOwnPropertyDescriptors(obj);
// {
// val:
// {
// configurable: true,
// enumerable: true,
// value: 111,
// writable: true
// }
// }
Object.setPrototypeOf()
设置原型对象的方法
let proto = {};
let obj = { a: 11 };
Object.setPrototypeOf(obj, proto); //将`proto`对象设为`obj`对象的原型
proto.b = 22;
proto.c = 33;
obj.x // 11
obj.y // 22
obj.z // 33
Object.getPrototypeOf()
用于读取一个对象的原型对象
function Fun(){};
let fun = new Fun();
Object.getPrototypeOf(fun) === Fun.prototype // true
Object.keys(),Object.values(),Object.entries()
Object.keys
方法,返回一个数组,成员是参数对象自身的(不含继承的)所有可遍历(enumerable)属性的键名。Object.values
方法返回一个数组,成员是参数对象自身的(不含继承的)所有可遍历(enumerable)属性的键值。Object.entries()
方法返回一个数组,成员是参数对象自身的(不含继承的)所有可遍历(enumerable)属性的键值对数组。
let {keys, values, entries} = Object;
let obj = { x: 11, y: 21, z: 31 };
for (let key of keys(obj)) {
console.log(key); // 'x', 'y', 'z'
}
for (let value of values(obj)) {
console.log(value); // 11, 21, 31
}
for (let [key, value] of entries(obj)) {
console.log([key, value]); // ['x', 11], ['y', 21], ['z', 31]
}
Object.fromEntries()
将一个键值对数组转为对象。
let arr = [ ['x','a'], ['y','b']]
Object.fromEntries(arr) // {x:'a', y:'b'}
参考文献
阮一峰老师的 ECMAScript 6 入门
点赞 评论 收藏 ~~ 今天的学习记录暂时到这... ~~ 点赞 评论 收藏