ES6:对象的扩展

发布时间:2019-08-09 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了ES6:对象的扩展脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

ES6中觉得比较特别简洁的写法,可以直接写入变量和函数

VAR foo = 'bar';
var baz = {foo};
baz // {foo: "bar"}

// 等同于
var baz = {foo: foo};

function f(x, y) {
  return {x, y};
}

// 等同于

function f(x, y) {
  return {x: x, y: y};
}


Object的方法
Object.is():
用来比较两个值是否严格相等,与严格比较运算符(===)的行为基本一致。

Object.assign()
用于对象的合并,将对象的所有课枚举属性复制到目标对象。
这个方法是浅拷贝,不是深拷贝
这个也可以用来处理数组,但是会把数组视为对象

Object.assign([1, 2, 3], [4, 5])//// [4, 5, 3]

他的基本用法是

  1. 给对象添加属性

  2. 为对象添加方法

  3. 克隆对象

  4. 合并多个对象

  5. 为属性指定默认值

属性的可枚举性
Object.getOwnPropertyDescriptor: 这个方法可以用来获取该属性的描述对象。
属性的遍历
1.for..in 遍历对象自身的和可继承的可枚举属性(不含Symbol属性)
2.Object.keys(obj),返回一个数组,包括对象自身的(不含继承的)所有课枚举属性(不含Symbol属性)
3.Object.getOwnPropertynames(obj):返回一个数组,包含对象自身的所有属性(不含Symbol,但是包括不可枚举属性)
4.Object.getOwnPRoPErtySymbols(obj),返回一个数组,包含对象自身的所有Symbol属性
5.Reflect.ownKeys(obj): 返回一个数组,包含对象自身的所有属性,不管是属性名是Symbol或者字符串,也不管是否可枚举

这5中方法都遍历对象的属性,都遵从同样的属性遍历的次序规则

  • 首先遍历所有属性名为数值的属性,按照数字排序

  • 其次遍历所有属性名为字符串的属性,按照生成时间排序

  • 最后遍历属性名为Symbol值的属性,按照生成时间排序

Object.getPrototypeOf()
Object.keys()
Object.values()
Object.entries(): 返回一个数组,成员是参数对象自身的(不含继承的)所有可遍历属性的键值对数组

var obj = { foo: 'bar', baz: 42 };
Object.entries(obj)
// [ ["foo", "bar"], ["baz", 42] ]

对象的扩展运算符的应用

1.解构赋值

const [a, ...b] = [1, 2, 3];
a // 1
b // [2, 3]

let { x, y, ...z } = { x: 1, y: 2, a: 3, b: 4 };
x // 1
y // 2
z // { a: 3, b: 4 }

2.遍历对象的所有可遍历属性

let z = { a: 3, b: 4 };
let n = { ...z };
n // { a: 3, b: 4 }

let ab = { ...a, ...b };
// 等同于
let ab = Object.assign({}, a, b);

Object.getOwnPropertyDescriptors()
ES5中有一个Object.getOwnPropertyDescriptor,返回某个对象属性的描述对象,而getOwnPropertyDescriptors返回指定对象所有自身属性(非继承属性)的描述对象。

//TODO: Object的所有方法整理es5新增的方法
// 扩展运算符的整理

脚本宝典总结

以上是脚本宝典为你收集整理的ES6:对象的扩展全部内容,希望文章能够帮你解决ES6:对象的扩展所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。