一、箭头函数和普通函数中的this区别
普通函数中的this:
1.this总是代表它的直接调用者谁调用了该方法,this就指向谁;
2.在默认情况(非严格模式下,未使用 'use strict'),没找到直接调用者,则this指的是 window;
3.在严格模式下,没有直接调用者的函数中的this是 undefined;
4.使用call,apply,bind(ES5新增)绑定的,this指的是 绑定的对象。
箭头函数中的this:
1.箭头函数会捕获其所在上下文的 this 值,作为自己的 this 值,自己本身并没有this值;
2.箭头函数的this永远指向其上下文的this,任何方法都改变不了其指向,如call(), bind(), apply()。
箭头函数作为匿名函数,没有function关键字,是不能作为构造函数的,不能使用new
二、项目中具体使用 Babel转码器
babel可以将ES6代码转为ES5代码,然后在JavaScript环境中执行
转码前 input.map(item => item + 1);
转码后 input.map(function(item){
return item + 1;
})
项目中的配置文件是.babelrc文件
Babel默认只转换新的JavaScript句法,而不转换新的API,比如Iterator、Generator、Set、Maps、Proxy、Reflect、Symbol、Promise等全局对象,以及一些定义在全局对象上的方法(比如Object.assign,Object.entries)都不会转码。
IE浏览器不支持,呵呵。
ES6在Array对象上新增了Array.from方法。Babel就不会转码这个方法。如果想让这个方法运行,必须使用babel-polyfill,为当前环境提供一个垫片。
安装命令如下。
$ npm install --save babel-polyfill
网友评论