欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

ES6对象新增方法

程序员文章站 2022-07-13 09:33:03
...

参考:阮一峰

1.Object.is() 方法判断两个值是否是相同的值。

ES5 比较两个值是否相等,只有两个运算符:相等运算符()和严格相等运算符(=)。它们都有缺点,前者会自动转换数据类型,后者的NaN不等于自身,以及+0等于-0。
ES6对象新增方法
ES6提出Object.is方法,这个算法用来比较两个值是否严格相等,与严格比较运算符( === )的行为基本一致。
ES6对象新增方法
和===不同的是:
ES6对象新增方法
ES6对象新增方法

2.Object.assign()

基本用法:Object.assign()方法用于对象的合并,将源对象(source)的所有可枚举属性,复制到目标对象(target)。

const target = { a: 1 };
const source1 = { b: 2 };
const source2 = { c: 3 };
Object.assign(target, source1, source2);
target // {a:1, b:2, c:3}

Object.assign()方法的第一个参数是目标对象,后面的参数都是源对象。

注意,如果目标对象与源对象有同名属性,或多个源对象有同名属性,则后面的属性会覆盖前面的属性。

const target = { a: 1, b: 1 };
const source1 = { b: 2, c: 2 };
const source2 = { c: 3 };
Object.assign(target, source1, source2);
target // {a:1, b:2, c:3}

如果只有一个参数,Object.assign()会直接返回该参数。

const obj = {a: 1};
Object.assign(obj) === obj // true

应用:浅拷贝
ES6对象新增方法

3.直接操作 proto 属性

本质上是一个内部属性,而不是一个正式的对外的 API,只是由于浏览器广泛支持,才被加入了 ES6。标准明确规定,只有浏览器必须部署这个属性,其他运行环境不一定需要部署,而且新的代码最好认为这个属性是不存在的。因此,无论从语义的角度,还是从兼容性的角度,都不要使用这个属性.而是使用下面的Object.setPrototypeOf()(写操作)、Object.getPrototypeOf()(读操作)、Object.create()(生成操作)代替。

Object.setPrototypeOf()

Object.setPrototypeOf方法的作用与__proto__相同,用来设置一个对象的原型对象(prototype).返回的第一个参数对象本身。
ES6对象新增方法
如果一个对象本身部署了__proto__属性,该属性的值就是对象的原型。
ES6对象新增方法

Object.getPrototypeOf()

该方法与Object.setPrototypeOf方法配套,用于读取一个对象的原型对象。相当于实例对象.__proto__属性值。

ES6对象新增方法

相关标签: 面试秃破瓶颈