ES6的常用新特性

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}`)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值