ES6 新增对象扩展
1. Object.is() —— 严格判断两个值是否相等
Object.is(NaN, NaN); // true
Object.is(+0, -0); // false
与 === 不同的是:Object.is 把 NaN 和 NaN 视为相等,把 +0 与 -0 视为不相等。
2. Object.assign(target, source1, source2) —— 对象合并
将 source 对象的可枚举属性浅拷贝到 target。
const a = { x: 1 };
const b = { y: 2 };
Object.assign(a, b); // { x: 1, y: 2 }
3. Object.setPrototypeOf() —— 设置原型对象
Object.setPrototypeOf(object, prototype);
4. Object.getPrototypeOf() —— 读取原型对象
Object.getPrototypeOf(obj); // 等价于 obj.__proto__,但更推荐
5. Object.values() —— 返回自身可遍历属性的值数组
Object.values({ a: 1, b: 2 }); // [1, 2]
6. Object.entries() —— 返回自身可遍历属性的键值对数组
Object.entries({ a: 1, b: 2 }); // [['a', 1], ['b', 2]]
补充:其他常用 ES6 对象扩展:
Object.keys()(ES5 已有)—— 返回自身可枚举属性键的数组。Object.fromEntries()(ES2019)——Object.entries的逆操作,可把[['a',1]]转回{a:1},常配合URLSearchParams使用。- 对象展开运算符
{ ...obj }—— 浅拷贝,等价于Object.assign({}, obj),但更简洁。 - 属性名简写与方法简写:
{ x, fn() {} }。 - 计算属性名:
{ [key_${i}]: i },模板中通过[]把变量或表达式作为属性名。
来源整理自:vue3js.cn 面试官系列



