let 、const
都是声明变量
const
声明一个只读的常量 声明之后不可以修改,所以 const 一旦声明就必须立即初始化,不能留到以后赋值
都是块级作用域,在{}内有效
箭头函数
箭头函数写法更加简洁,省略了function关键字声明,省略return
[1,2,3].map(x=>x+1)
// 相当于
[1,2,3].map(function(x){
return x+1
})
另外,箭头函数的this是定义时的this,不是运行时的this,比如vue在method中找this.data找不到,原因就是this指向的不是运行时的vue的实例,而是定义时的window
Class类
新增class 关键字来定义声明一个类,还多了extends继承关键字,使得类的声明的继承更加方便,有点像java语言
class Person{
constructor(name){ //构造函数
this.name=name;
}
sayName(){
console.log('name: '+this.name);
}
}
//继承
class Student extends Person{ //这点和java语言很像,都是通过关键字extends
constructor(name,age){
super(name); //调用父类构造函数,这点跟java又一样
this.age=age;
}
sayAge() {
console.log('age: '+this.age);
}
sayAll() {
console.log('sayAll:');
console.log('name: '+this.name);
console.log('age: '+this.age);
}
}
var stu=new Student('jack',20);
console.log(Student.prototype===stu.constructor.prototype); //true
stu.sayName();
stu.sayAge();
stu.sayAll();
模板字符串
const name ='hu'
console.log(`hello,${name}`)
symbol
ES6 引入了一种新的原始数据类型Symbol,表示独一无二的值。它是 JavaScript 语言的第七种数据类型,前六种是:undefined、null、布尔值(Boolean)、字符串(String)、数值(Number)、对象(Object)。
Symbol 值通过Symbol函数生成。这就是说,对象的属性名现在可以有两种类型,一种是原来就有的字符串,另一种就是新增的 Symbol 类型。凡是属性名属于 Symbol 类型,就都是独一无二的,可以保证不会与其他属性名产生冲突。
let s = Symbol();
console.log(typeof s)
// symbol
let s1 = Symbol()
let s2 = Symbol()
s1===s2 //false
Promise
Promise的出现是为了防止异步调用出现很多层回调函数,显得代码臃肿,可以通过链式调用的方式书写异步代码,保证了代码的线性逻辑
export 和 import
import people from './person'
// 整个模块导入并使用as关键字重命名
// 该模块的所有导出都会作为对象的属性存在
import * as person './person.js'
import {name,age} from './person'
// 导出
export default App
// 一个文件里,有且只能有一个export default 但可以有多个export
// 当一个文件里,既有export default people,又有多个export name 或者export age时,导入就用import people,{name,age}
// 当一个文件里出现很多个export 导出很多模块导入时除了一个一个导入,也可以使用import * as example全部导入
展开运算符
写法是三个点…
可以用来组装数组
const arr1 = [1,2,3]
const arr2 = [...arr1,4,5,6]
console.log(arr2);
// [1,2,3,4,5,6]
对象的拓展
- 键值对重名可省略
- 对象中方法的简写
let person = { run(){ console.log('run'); } //以前的话要写作 //run:function(){console.log('run')} } person.run()
- Object.assign(目标对象,源对象)
可以有多个参数,第一个为目标对象,第二个开始都是源对象,源对象可以有多个,当有重名属性的时候会被最后一个值覆盖,返回目标对象
解构赋值
为了简化提取数组或对象中的值,es6新加了解构的特性
const people = {
name:'hu',
age:21
}
const {name,age} = people;
// 以前的话要写作
// var name= people.name
// var age=people.age
console.log(`${name},${age}`)