持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第6天
点击查看活动详情
一、举例 ES6 对 String 字符串类型做的常用升级优化
1、优化部分:
ES6 新增了字符串模板,在拼接大段字符串时,用反斜杠取代以往的字符串相加的形式,能保留所有空格和换行,使得字符串拼接看起来更加直观,更加优雅。
2、升级部分:
ES6 在 String 原型上新增了 includes()方法,用于取代传统的只能用 indexOf 查找包含字符的方法(indexOf 返回-1 表示没查到不如 includes 方法返回 false 更明确,语义更清晰), 此外还新增了 startsWith(), endsWith(), padStart(),padEnd(),repeat()等方法,可方便的用于查找,补全字符串。
二、举例 ES6 对 Function 函数类型做的常用升级优化
1、优化部分:
1)箭头函数(核心)。箭头函数是 ES6 核心的升级项之一,箭头函数里没有自己的 this,这改变了以往 JS 函数中最让人难以理解的 this 运行机制。主要优化点:
a.箭头函数内的 this 指向的是函数定义时所在的对象,而不是函数执行时所在的对象。ES5函数里的 this 总是指向函数执行时所在的对象,这使得在很多情况下 this 的指向变得很难理解,尤其是非严格模式情况下,this 有时候会指向全局对象,这甚至也可以归结为语言层面的bug 之一。ES6 的箭头函数优化了这一点,它的内部没有自己的 this,这也就导致了 this 总是指向上一层的 this,如果上一层还是箭头函数,则继续向上指,直到指向到有自己 this 的函数为止,并作为自己的 this。
b.箭头函数不能用作构造函数,因为它没有自己的 this,无法实例化。
c.也是因为箭头函数没有自己的 this,所以箭头函数 内也不存在 arguments 对象。(可以用扩展运算符代替)
2)函数默认赋值。ES6 之前,函数的形参是无法给默认值得,只能在函数内部通过变通方法实现。ES6 以更简洁更明确的方式进行函数默认赋值。
2、升级部分:
ES6 新增了双冒号运算符,用来取代以往的 bind,call,和 apply。
foo::bar;等同于 bar.bind(foo);
foo::bar(...arguments)等同于 bar.apply(foo, arguments);