ES6基础
let和const
在以前的js中有一个问题,就是只存在函数作用域而不存在局部作用域。
let,const的出现改变了这个问题。const就是定义常量。
this指向
说默认this指向调用它的对象倒不如说函数this的指向是又他的调用方法决定的。
例如:
'use strict';
const person = {
name: '',
walk() {
console.log(this);
}
}
const walk = person.walk; // 绑定this
walk();
这里将会将会返回undefined
(在严格模式下),如果不使用严格模式,那么这个this将指向window对象,在node中也就是global对象。而在严格模式下不允许this指向window对象。
对于匿名函数,他不会改变this的指向。
数组和对象的解构
使用...
来对数组和对象进行析构操作。
const arr = [1, 2, 3]
const ob = {name: 'ob'}
const [a, b, c] = [...arr] // 数组析构
const {name} = {...ob} // 对象析构
如果想要对象中的某个属性进行重命名而不像使用原来的名字的化,可以这样做{name: newName = {...ob}
。对象析构根据键复制,如果你不想要对应的某个属性的话,你可以忽略这个键名。
结构操作在很多时候都很有用,比如你想要连接几个数组的时候一般使用concat的方法,但是concat方法不想像使用析构的时候可以随意插入新值。
扩展运算符
例如像是这样子的函数函数
function test(...args) {
//
}
function test1(a1, ...args) {
//
}
对于test函数,传入的所有参数(不限个数)都将存储在args数组中。而对于test1函数,除传入的第1个参数以外都将会被装入args数组中。
函数
-
Array.filter
该函数接收一个回调函数,数组的每一项都将会被传入这个函数。当回调函数返回值为true时,此时被传入回调函数的一项值被装入一个新的数组。在数组的所有条目遍历完成以后,将这个新数组返回。
-
Array.map
对数组的每一项应用map中传入的回调函数,之后将经过处理的项装入一个新的数组并返回。
模块化
js中的模块化就是将不同功能的js抽取出来放在不同的文件中。
模块中的对象默认是私有的,也就是默认只能够在这个模块(文件)中访问,如果需要其能够在外部被访问的话,那么就需要声明它能够被外部导出。
像是这样:
export class Person {
constructor(name) {
this.name = name
}
walk() {
console.log('walk')
}
}
要是需要导出的话就需要使用对象名导出,像是import {Person} from './Person'
,当然我们最常见的是例如import React from 'react'
这是从js官方模块中导入,所以不需要加上路径。
同时他并没有使用对象名导入,而是直接使用了默认对象导出,大多数时候在模块中只有一个对象的时候使用。默认导出对象的定义只需要在export
后面加上一个default
关键字。
对象名导入和默认对象导入可以混用,例如import React, {Conponent} from 'react'
。