Es6

es6 与es5 的一些区别

  • var声明的变量是 全局作用域,(变量提升)
  • let声明的变量是 块级作用域 局部的 不能重复声明 不存在变量提升
  • const声明变量是 一旦声明 立即初始化 不能重复声明(局部变量)
var  和 let  的一个bug    
var a=[] for(var i=0; i<10; i++){ a[i] = function(){ console.log(i) } } a[6]() // 10 注意var 是全局的 let 局部的
    console.log(foo)  // undefined  
    var foo = 2

    console.log(bar)  // let 不存在变量提升
    let bar = 2  
var a = 1
var b = 2
---------------------es5-----------------
// var str = "哈哈哈" + a + "嘿嘿嘿" + b  // 哈哈哈1嘿嘿嘿2 
------------------es6------------------
var str = `hahaha${a}heiheihei${b}`  // hahaha1heiheihei2

 

 

箭头函数

function(){}        ====   ()=>{   this   }

这里this指的对象的父级对象window,不是使用时的对象
arguments不能使用



// 字面量方式创建对象

var person1 = {
    name:"alice",
    age:20,
    fav:function(){
        console.log(arguments) // Arguments(3) [1, 2, 3]
        console.log(this)  // 使用时定义的对象 {name: "alice", age: 30, fav: ƒ}  
    }

  fav2:()=>{}
   }

 

es6的单体模式

为了解决箭头函数this的指向问题----->单体模式
function(){}  ===  ()=>{}  ===  (){}


可以使用arguments

 

 

对象创建

<script type="text/javascript">
    // es5 构造函数的方式创建对象  
    function Animal(name,age){
        this.name = name
        this.age = age 
    }
    Animal.prototype.showName = function(){
        console.log(this.name)
    }
    Animal.prototype.showAge = function(){
        console.log(this.age)
    }

    var dog = new Animal("wangwang",18)
    console.log(dog) // Animal {name: "wangwang", age: 18}

    dog.showName()  
    dog.showAge()


    // es6 方式创建对象
    class Animal2{
        constructor(name,age){
            this.name = name
            this.age = age
        }
        showName(){
            console.log(this.name)
        }
    }
    var d = new Animal2("张三",19)
    console.log(d) // Animal2 {name: "张三", age: 19}
    d.showName() // 张三


</script>
posted @ 2018-09-03 09:36  慕沁  阅读(137)  评论(0)    收藏  举报