ES6常用特性

一、let 和 const

var定义变量只有全局作用域和函数作用域,let新增了块级作用域(let定义的变量不会变量提升);const用来声明常量。

let boxs = document.querySelectorAll(".box");
for (let i = 0; i < boxs.length; i++){
    boxs[i].onclick = () => {
        console.log(i)
    }
}
//闭包写法
var boxs = document.querySelectorAll(".box");
for (var i = 0; i < boxs.length; i++){
    boxs[i].onclick = ((i)=>{
        return (e)=>{
            console.log(i)
        }
    })(i)
}

二、arrow Function(箭头函数)

箭头函数使函数写法简洁;函数体内的this对象,就是定义时所在的对象,而不是使用时所在的对象;它的this是继承外面的,因此内部的this就是外层代码块的this。

log(say){
    setTimeout( () => {
        console.log(this.state)
    }, 1000)
},
logs(){
    let self = this;
    setTimeout(function(){
        console.log(self.state)
    }, 1000)
}

三、template String(模版字符串)

用反引号" ` "来标识起始,用 ${} 来引用变量。

let str = `状态:${this.state}`;
let strs = "状态:"+this.state;

四、destructuring(解构赋值)

解构可添加默认值,使用剩余运算符,可嵌套可忽略。

//对象用法
let obj = { a: 1, b: 2, c: 3, d: 4, e: 5};
let {a, b, ...c} = obj;
console.log(a,b,c) //1 2 {c: 3, d: 4, e: 5}

let a = 1, b = 2;
let obj = {a, b}
console.log(obj.a,obj.b)//1 2

//数组用法
let arr = [1,2];
let [a, b, c = 3] = arr;
console.log(a,b,c) // 1 2 3

//交换两个变量的值
let a = 1,b = 2;
[a,b] = [b,a];
console.log(a,b)//2 1

//嵌套用法
let obj = {a: [2, {c: 3}] };
let {a,a:[b, {c, d = 4}] } = obj;
console.log(a,b,c,d)//[2, {c: 3}] 2 3 4

五、import export(模块引用、导出)

export可输出变量、函数和类。

// e.js
export default 'Lebron';
export function work(){
    return 'player'
}
export const type = 'basketball'
import people, { work, type as games} from './e';
let job = work();
console.log(`${people} is a ${games} ${job}`)  //Lebron is a basketball player

六、class类

引入class类的概念,实现继承。

class Father{
    constructor(value){ //构造函数
        this.value = value
    }
    say(){
        console.log("我是father");
        console.log(this.value);
    }
}
class Child extends Father{
    constructor(value){
        super(value); // 调用父类的constructor(value)
    }
    say(){
        console.log("我是child");
        super.say();  // 调用父类的say()方法
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。