ES6对象扩展小结

本文介绍了JavaScript中对象的简洁写法,包括属性简写、方法简写、属性名表达式,以及方法的name属性。此外,还讲解了对象的扩展运算符在取值和作为rest参数时的应用,并提及了其在不同浏览器的兼容性问题。
摘要由CSDN通过智能技术生成

对象 (object)是JavaScript最重要的数据结构

1.属性的简洁

ES6允许在大括号里直接写入变量函数,作为对象的属性和方法,会更加简洁。

若属性名和属性值与其相对应的变量名相同,则可以简化

如:

function fn(a,b){
        return{
            a:a,//属性名:属性值
            b:b
        }
       }
        console.log(fn(1,2));//{a: 1, b: 2}
//属性名‘a’与属性值“a”与其 变量名”a“相同,b同理 所以可以简写为:
  function fn(a,b){
            return{a,b}
        }
        console.log(fn(1,2));//{a: 1, b: 2}

2.方法简写

除了属性还有方法可以简写

let obj = {
        fn:function(){
            return"Hello Window"
        }
    }
    //function 可简写
    let obj1 = {
        fn1(){
            return"Hello Window"
        }
    }

简写例子

let name="李四" ;
let Person = {
    name,//name:name
    run(){//run:function()
        console.log(name +"在奔跑");
        return "";
    }
    
}
Person.run();

理解:在大括号里写入变量‘name’和函数‘run()’,作为对象(Person)的属性和方法。

3.属性名表达式

在JavaScript中有两种定义对象的属性的方法

let obj={}
        //方法1
        obj.name = "赵六";
        //方法2
        obj['a'+'b']= 111;

        console.log(obj.name);//赵六
        console.log(obj.ab);//111

方法一是直接用标识符作为属性名,

方法二是用表达式作为属性名,这时要将表达式放在方括号之内。

在ES5中 ,如果使用字面量方式定义对象(使用大括号)只能使用方法一

 var age = 'ac';
        var obj = {
            name:'李雷',
            age:18
        };
        console.log(obj)//{name: '李雷', age: 18}

S6 允许字面量定义对象时,用方法二(表达式)作为对象的属性名,即把表达式放在方括号内:

var age = 'ac';
        var obj = {
            name:'李雷',
            age:18,
            ['a'+'c']:'张三'
        };
        console.log(obj['ac']);//张三

注:因为ES6有兼容性问题,所以当使用表达式作为对象的属性名 可能会报错 (比如IE)

4.方法的name属性

函数的’name‘属性是返回函数名。对象方法也是函数,因此也有‘name’属性。

let obj = {
            Person(){
                console.log('杨过');
            }
        }
        console.log(obj.Person.name);//Person

即方法的'name'属性返回函数名(即方法名)。

5.对象的扩展运算符

对象的扩展运算符(...)用于取出参数对象的所有可遍历属性,拷贝到当前对象之中。

扩展运算符有两种用法

  • 扩展运算符(spread) 用于取值

 let arr = [1,2,3,4];
        console.log(...arr);//1 2 3 4

当然也可以将扩展运算符用于数组

 let obj = {...[1,2,3,4]};
        console.log(obj);//{0: 1, 1: 2, 2: 3, 3: 4}
  • 当为rest参数是为逆运算

    function fn(a,b,...c){
            console.log(a,b,c);
        }
        fn(1,2,3,4,5,6,7,8,9);//1 2 (7) [3, 4, 5, 6, 7, 8, 9]

rest参数只能是最后一个参数

//当为第二个参数时:
function fn(a,...b,c){
            console.log(a,b,c);
        }
        fn(1,2,3,4,5,6,7,8,9);
//Uncaught SyntaxError: Rest parameter must be last formal parameter

//当为第一个参数时:
function fn(...a,b,c){
            console.log(a,b,c);
        }
        fn(1,2,3,4,5,6,7,8,9);
        //Uncaught SyntaxError: Rest parameter must be last formal parameter

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值