es6总结1

1、let 块级作用域
解决了事件循环泄露的问题和setTimeout异步的问题

for(var i=0;i<10;i++){
        setTimeout(() => {
            console.log(i)            
        }, 0);
    }//输出10个10

for(var i=0;i<10;i++){
       (function(i){
           setTimeout(() => {
               console.log(i)
           }, 0);
       }(i))
    }//输出0,1,2,3,4,5,6,7,8,9

在这里插入代码片


 for(let i=0;i<10;i++){
        setTimeout(() => {
            console.log(i)            
        }, 0);
    }//输出0,1,2,3,4,5,6,7,8,9
    

2、const
定义了常量

 此处即表示let  cpnst class命令声明的全局变量不属于顶层对象的属性
        var a=1;
        console.log(window.a)//1
        let b=1;
        const c=1
        console.log(b)//1
        console.log(window.b)//undefined  
        console.log(window.c)// undefined
        
//es5常量的实现
        Object.defineProperty(window,"pi",{
            value:3.1415926,
            writable:false
        })
        console.log(window.pi)//3.1415926
        window.pi=4
        console.log(window.pi)//3.1415926  不可以修改



  // es6中的常量
        const pi2=3.1415926
        console.log(pi2)
        pi=4
        console.log(pi2)


//还有一种方法实现常量的效果
//es6中的对象代理
        var Person={
            name:"lili",
            age:"18",
            sex:"女"
        }
        var person=new Proxy(Person,{
            get(target,key){
                return target[key]
            },
            set(target,key,value){
                if(key!=="sex"){//此处规定了sex不可以修改赛事
                    target[key]=value
                }
            }
        })
        console.log(person.name)//lili
        console.log(person.age)//18
        console.log(person.sex)//女

        person.name="小宝"
        person.age="20"
        person.sex="男"
        console.log(person.name)//小宝
        console.log(person.age)//20
        console.log(person.sex)//女
   此处代表性别不可以修改

3、解构赋值
(1)数组的解构赋值
(2)对象的解构赋值
(3)字符串的解构赋值
(4)函数参数的解构赋值
(5)提取Json数据

 //数组的结构赋值
        // let [a,b,c]=[1,2,3]
        // console.log(a)//1
        // let [d,e]=[1,2,3]
        // console.log(d)//1
        // console.log(e)//2
        // let [d,e,f,g]=[1,2,3]
        // console.log(g)//undefined
    //对象的解构赋值
        // let {a,b}={a:"aaa",b:"bbb"}
        // console.log(a)//aaa
        // console.log(b)//bbb

        // let obj={p: ["hello",{y:"world"}]}
        // let {p:[x,y]}=obj
        // console.log(p)//Uncaught ReferenceError: p is not defined   这里的p是模式,不是变量,
        // console.log(x)//hello
        // console.log(y)//{y: "world"}

        // let {p,p:[x,y]}=obj
        // console.log(p)

    //字符串的解构赋值
        // let [a,b,c,d,e]="hello"
        // console.log(a)//h
        // console.log(d)//l
        // console.log(c)//l
        // let {length:len}="hello"
        // console.log(len)//5

    //函数参数的解构赋值
        // function main(a=3,b=4){
        //     return a+b
        // }
        // console.log(main())//7
        // console.log(main(1,1))//2

        // var m=[[1,2],[3,4]].map(([a,b])=>a+b)
        // console.log(m)//3,7


        //提取json数据
        // let jsondata={
        //     data:"json",
        //     type:"get",
        //     number:[1000,2000],
        // }
        //let {data,type,number}=jsondata
        // console.log(data)
        //console.log(type)
        // console.log(number)
        // console.log(data,type,number)

4、class的理解

class Father{
        constructor(x,y){
                this.x=x;
                this.y=y
        }
}
var f=new Father(1,2)
console.log(f.x)//1
console.log(f.y)//2

class继承

 class A{
        constructor(x){
            this.x=5
        }
    }
    class B extends A{
        get(){
            return super.x
        }
    }
    var b=new B()
    console.log(b.get())//undefined
    console.log(b.x)//5

5、函数的扩展
(1) reat参数:function(…args){}
(2)严格模式:允许在函数内部使用
(3)箭头函数:()=>{} this指向定义是的this
6、数组的扩展
(1)trim() 去除字符串两侧的空格,主要解决表单提交产生的两侧空格

        var str=" abc "
        console.log(str.length)//5
        var str1=str.trim()
        console.log(str1.length)//3

(2)Array.from(arr,function)
将伪数组变成数组,使用数组的方法,并且接受一个函数,类似于map方法

在es5中转化数组采用Array.prototype.slice.call()
(3)find() findIndex() 参数为回调函数 返回第一个符合的数组成员
(4)includes() 判断数组中是否包含某元素
(5)Array.of() 将一组值转换为数组
(6)数组实例values() key() entries()

//太多了,就写到这里了

        var div=document.querySelectorAll("div")
        console.log(div)//odeList(6) [div, div, div, div, div, div]
        Array.from(div).forEach(function(value){
            console.log(value)
        })
        console.log(Array.from(div))//(6) [div, div, div, div, div, div]
        console.log(Array.prototype.slice.call(div))//(6) [div, div, div, div, div, div]

7、

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值