入门客AI创业平台(我带你入门,你带我飞行)
博文笔记

ES6 基础教程(一)

创建时间:2017-05-12 投稿人: 浏览次数:1590

1.let

用法:块级作用域;不可重复声明。

2.const

用法:定义常量;一旦定义,你只能去读取它,不要进行其他操作。

3.箭头函数

  • 语法:(这里写参数列表)=>{这里写函数返回值}
  • 这个函数永远是匿名的。
  • this 指向函数所在的上下文环境
  • 没有 arguments 对象

3.默认参数与 rest

默认参数

function fn(a,b){
    console.log(a,b);
}

fn();//undefiend  undefined



function fn(a=5,b=6){//现在我们给一个默认参数
    console.log(a,b);
}

fn();//5 6

rest

function fn(...re){
    console.log(re);
}

fn(1,2,3,4);//[1,2,3,4]


function fn(normal,...re){
    console.log(re);
}

fn();//[2,3,4]

4.spread

  • 能把数组展开
  • 能把对象展开(es7里面的内容)
function fn(normal,...re){
    //这里 spread 就把一个数组展开了
    ott(...re);
}

fn(1,2,3,4);//9

function ott(a,b,c){
    console.log(a+b+c);
}

5.模板字符串

模板字符串是一种新的用来拼接字符串的方式,只是用来拼接字符串。

  • 语法:`这里面写字符串 ${这里面写你想写的变量}`
  • 注意,包围字符串的不是单双引号,而是一对小浅点,也就是位于 tab 键上方,esc 键下方的那个键。
let firstname = "lao",lastname = "wang";

let str = `my mane is ${firstname} ${lastname}`;

console.log(str);// my name is lao wang

6.结构赋值

结构赋值只是一种新的更简便的赋值语法。

let human = {
    age : 18,
    name : "laowang"
}

let {age,name} = human;

console.log(age,human);// 18 laowang
//你也可以给变量赋予新的名字
let human = {
    age : 18,
    name : "laowang"
}

let {age=youngAge,name} = human;

console.log(youngAge,human);// 18 laowang
let human = {
    age : 18,
    name : "laowang",
    children:{
        c1 : "laoda",
        c2 : "laoer"
    }
}

//当然你不必结构所有的属性,需要什么就把什么拿出来就好了 
let {age=youngAge,name,children:{c1,c2} = human;

console.log(youngAge,human,c1,c2);// 18 laowang laoda laoer

7.类

语法:

class ClassName{
    constructor(){
//当我们在实例化一个对象的时候,首先会执行这个构造函数,这意味
//着,刚你在 new 一个类的时候,你可以在 constructor 里面做
//一些初始化的事情
    }
}

实例:

class Animal {
    constructor(a,b,c){
        this.a = a;
        this.b = b;
        this.c = c;
    }

    move(){
        console.log("i can move");
    }
}

//实例化一个类
let dog = new Animal(1,2,3);

console.log(dog.a,dog.b,dog.c);// 1 2 3 


//我们运行一下它的方法
dog.move();// i can move

对象之间的继承:

class Animal {
    constructor(a,b,c){
        this.a = a;
        this.b = b;
        this.c = c;
    }

    move(){
        console.log("i can move");
    }
}

//实例化一个类
let dog = new Animal(1,2,3);

console.log(dog.a,dog.b,dog.c);// 1 2 3 

class Human extends Animal{
    constructor(age){

//super 的意思是它会执行一个父类的构造函数,然后你可以在这里
//面给父类的构造函数赋值。你可以给它三个参数,你也可以什么都不
//给,但是你要执行一下 super 这个函数让父类的构造函数执行一下
//就可以了

        super();
        this.age= age;
    }

    //你可以覆盖掉父类的方法
    move(){
        console.log("i can run");
    }
}

let jim = new Human("18");
console.log(jim.age);//18
console.log(jim.a);//undefined 这里就是说他已经继承了父类的属性,但是你并没有对其初始化
jim.move();// i can run

8.模块化

ES6 模块化规范

(a.js)
//import 后面的这个变量是用来接受你导入的模块的默认导出值的,你可以自定义不同的名字,花括号就是用来拿到 export 里面导出的内容的,花括号里面名字必须和 export 里面的名字一样
import fnnn,{fn1,fn2} from "./b.js";


fn1();//fn1
fn2();//fn2
(b.js)

function fn1(){
    consolo.log("fn1");
}`

function fn2(){
    console.log("fn2");
}

//export 这是 ES6 的模块化规范里面用来暴露出口的关键字
export {
    fn1,
    fn2
}

export default function fn(){
    console.log("fn from module b");
}

commonJS 的模块化规范

const fnnn = require("./b.js");

fnnn.fn1();//fn1
fnnn.fn2();//fn2
(b.js)

function fn1(){
    consolo.log("fn1");
}`

function fn2(){
    console.log("fn2");
}

module.exports = {
    fn1,
    fn2
}
声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。