ES6 对象的新增方法

在这里插入图片描述

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 入门


点赞评论收藏~~ 今天的学习记录暂时到这... ~~点赞评论收藏

版权声明:本文为weixin_49175501原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。