ES6新增特性2

ES6新增特性2

1.箭头函数(拉姆达表达式)

基本语法

(形参列表) => {
  //函数体
}

注意:

1.函数体内如果只有一行代码,那么{}可以省略,如果有return ,那return也可以省略

2.形参列表如果只有一个参数,则括号()可以省略

3.如果想直接返回一个js对象,则可以在对象外面添加小括号

4.箭头函数的自执行

5.箭头函数无this绑定,这一点非常实用

6.箭头函数没有自己的arguments对象,但是可以使用外部的arguments对象,普通匿名函数返回undefined

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <script type="text/javascript">
    //第一种情况
    var sum = (num1,num2) => num1 + num2
    console.log(sum(1,2));   //3
    //第二种情况
    var foo = a => a+3;
    console.log(foo(1));    //4
    //第三种情况
    var foo1 = () => ({name : "Tom"});
    console.log(foo1());  //{name : "Tom"}
    //第四种情况
    var person = (name => {
        return {
            name : name,
            age : 20
        }
    })("Tom")
    console.log(person) //{name : 'Tom',age : 20}
    //第六种情况
    function foo2(){
        return () => arguments[0];
    }
    var f = foo2(5,6);
    console.log(f());   //5

    function foo3(){
        return function(){
            return arguments[0];
        }
    }
    var f1 = foo3(5,6);
    console.log(f1());   //undefined


    </script>
</body>
</html>

2.对象功能的扩展

2.1简写的属性初始化

1.当对象属性名和本地变量名 相同时,可以省略冒号和值

2.方法的简写,去掉冒号和function

3.在字面量中动态计算属性名

4.新增方法Object.is(),除了两张特殊情况,其余的都相当于 ===

5.Object.assign() 复制一个对象的属性和方法完整的转到另一个对象中,是一种浅复制,只是复制地址值,该方法可接受多个提供者 ,后面的同名属性覆盖前面提供者的属性值


<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <script type="text/javascript">
    //简写属性初始化
    function createPerson(name,age){
        /*return{
            name : name,
            age : age
        }*/
        //效果同上注释里的
        return {
            name,
            age
        }
    }
    console.log(createPerson("Tom",20)); //{name : "Tom",age : 20}
    //简写方法
    var person = {
        /*say : function(){
            console.log(1);
        }*/
        say(){
            console.log(1);
        }
    }
    person.say()     //1
    //字面量动态计算属性名
    var attName = 'name';
    var p = {
        [attName] : "Tom",  //属性名用[]括起来,则括号中就可以引用提前定义的变量
        age : 20
    }
    console.log(p[attName])    //"Tom"

    //两种特殊情况,其余都一样
    console.log(+0 === -0);     //true
    console.log(Object.is(+0,-0));  //false

    console.log(NaN === NaN);   //false
    console.log(Object.is(NaN,NaN));  //true
    </script>
</body>
</html>

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值