yii2数组转为对象_ES6核心特性2-对象扩展分析

ES6除了在语法上有改进外,基于原有对象的功能扩展及增强也有重大优化。

字符串,数值

字符串基本数据类型,它的包装类新增了几个常用方法

  • includes(): 返回布尔值, 表示是否找到了参数字符串。
  • startsWith(): 返回布尔值, 表示参数字符串是否在原字符串的头部。
  • endsWith(): 返回布尔值, 表示参数字符串是否在原字符串的尾部。
  • repeat():repeat 方法返回一个新字符串, 表示将原字符串重复 n 次
  • codePointAt():JavaScript 内部, 字符以 UTF-16 的格式储存, 每个字符固定为 2 个字节。 对于那些需要 4 个字节储存的字符(Unicode 码点大于 0xFFFF 的字符) , JavaScript 会认为它们是两个字符 。ES6 提供了 codePointAt 方法, 能够正确处理 4 个字节储存的字符, 返回一个字符的码点。
  • at():ES5 对字符串对象提供 charAt 方法, 返回字符串给定位置的字符。 该方法不能识别码点大于 0xFFFF 的字符。at 方法, 可以识别 Unicode 编号大于 0xFFFF 的字符, 返回正确的字符。

而数值将一些ES5的全局方法,集成到了一个static常量对象中,也标志着ES6正在像面像对象编程语言过度

  • Number.isFinite(), Number.isNaN()
    ES6 在 Number 对象上, 新提供了 Number.isFinite()和 Number.isNaN()两个方法。

Number.isFinite()用来检查一个数值是否为有限的(finite) , 即不是 Infinity。

Number.isNaN()用来检查一个值是否为 NaN。

  • Number.parseInt(), Number.parseFloat() ES6 将全局方法 parseInt()和 parseFloat(), 移植到 Number 对象上面, 行为完全保持不变。
  • Number.isInteger()
    Number.isInteger()用来判断一个数值是否为整数。
    例如:Number.isInteger(25) // trueNumber.isInteger(25.1) // false

函数

  • 参数默认值赋值,与解构赋值默认值结合使用
  • 新增箭头函数,类似java中的lamda表达式,简化函数声明及参数声明。但是同lamda表达式不完全是同一个概念,它还有一个绑定this指针到当前作用域的功能。类似于Object.method.bind(this)作用。
9851b13f0d41bc5aa8fbfcc96abfc673.png

数组

  • 扩展运算符

扩展运算符(spread) 是三个点(...) 。 它好比 rest 参数的逆运算, 将一个数组转为用逗号分隔的参数序列

4251bd80ed215585cde4ebbd219fbc3a.png
  • Array.from() Array.from 方法用于将两类对象转为真正的数组: 类似数组的对象(array-like object) 和可遍历(iterable) 的对象(包括 ES6新增的数据结构 Set 和 Map) 。
    下面是一个类似数组的对象, Array.from 将它转为真正的数组。
4889b65d4f0317abd34916e97cb46dc0.png
  • Array.of()
    Array.of 方法用于将一组值, 转换为数组。
d2219b38b3e23aad937149997b66bb24.png
  • 数组实例的 find() 和 findIndex()
    数组实例的 find 方法, 用于找出第一个符合条件的数组成员。 它的参数是一个回调函数, 所有数组成员依次执行该回调函数, 直到找出第一个返回值为 true 的成员, 然后返回该成员。 如果没有符合条件的成员, 则返回 undefined。
bbb154bfd53f9f15e5e68268e7cd8ce7.png
  • 数组实例的 fill()
    fill 方法使用给定值, 填充一个数组。
c0f469ecc9c6614f72bedf57baac01f6.png
  • 数组实例的 includes()
    Array.prototype.includes 方法返回一个布尔值, 表示某个数组是否包含给定的值, 与字符串的 includes 方法类似。 ES2016 引入了该方法。
9deb975523f5c4d09bb09f116cfb6ca3.png

对象

  • 扩展运算符,同数组一样
  • 简洁表示法

ES6 允许直接写入变量和函数, 作为对象的属性和方法。 这样的书写更加简洁

e4015699b898e58b4ef0cea65efdc0b7.png
  • Object.is()
    ES5 比较两个值是否相等, 只有两个运算符: 相等运算符(==) 和严格相等运算符(===) 。 它们都有缺点, 前者会自动转换数据类型, 后者的 NaN 不等于自身, 以及+0 等于-0。 JavaScript 缺乏一种运算, 在所有环境中, 只要两个值是一样的, 它们就应该相等。
    ES6 提出“Same-value equality”(同值相等) 算法, 用来解决这个问题。 Object.is 就是部署这个算法的新方法。 它用来比较两个值是否严格相等, 与严格比较运算符(===) 的行为基本一致
5b3985718b50ceaf315b558b5a256396.png
  • Object.assign()
    Object.assign 方法用于对象的合并, 将源对象(source) 的所有可枚举属性, 复制到目标对象(target)
481a28889bde9461f50a6874a925ff15.png
  • __proto__属性, Object.setPrototypeOf(), Object.getPrototypeOf()
    JavaScript 语言的对象继承是通过原型链实现的。 ES6 提供了更多原型对象的操作方法。
    __proto__属性
    __proto__属性(前后各两个下划线) , 用来读取或设置当前对象的 prototype 对象。 目前, 所有浏览器(包括 IE11) 都部署了这
    个属性。
    // es6 的写法 const obj = {
    method: function() { ... }};
    obj.__proto__ = someOtherObj;
    // es5 的写法 var obj = Object.create(someOtherObj);
    obj.method = function() { ... };
  • Object.setPrototypeOf()
    Object.setPrototypeOf 方法的作用与__proto__相同, 用来设置一个对象的 prototype 对象, 返回参数对象本身。 它是 ES6 正式推荐的设置原型对象的方法。
aa99652cab127b773f9c01017fb2d48d.png
  • Object.getPrototypeOf()
    该方法与 Object.setPrototypeOf 方法配套, 用于读取一个对象的原型对象
  • Object.keys(), Object.values(), Object.entries()
    Object.keys()
    ES5 引入了 Object.keys 方法, 返回一个数组, 成员是参数对象自身的(不含继承的) 所有可遍历(enumerable) 属性的键名
a4bdc5b10dac5fbf00dbe672085f0c7e.png

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

67cf1a0b883c2d89d9b744c11f57f69b.png

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

ada235b4a04aa059b446ae41119eb51a.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值