ES6扩展——对象的扩展(简洁表示法与属性名表达式)

1、简洁表达法。

当属性名与属性值相同时,可省略属性值;例如:{name : name}可以写成 {name}

属性方法中,可省略冒号与function,直接 属性名(){}即可。例如{say : function(arr){}}可以写成{say(arr){}}

es5的写法:

            //es5:
            const getUserInfo = (id = 1) => {
                //ajax ...
                const name = 'xiaoming';
                const age = 10;
                
                return{
                    name: name,
                    age: age,
                    say: function(){
                        console.log(this.name + this.age);
                    }
                };
            };
            const xiaoming = getUserInfo();

es6的写法:

            //es6:
            const getUserInfo1 = (id = 1) => {
                //ajax ...
                const name = 'xiaoming';
                const age = 10;
                return{
                    name,
                    age,
                    say(){
                        console.log(this.name + this.age);
                    }
                };
            };
            const xiaoming1 = getUserInfo();
            

 

 

 

2、属性名表达式。

可以将声明的变量用中括号 [] 包裹,作为属性名。也可以是表达式或模板字符串。

            const obj = {
                a:1,
                $abc:2,
                'aflajroi23#$T':3  //不符合命名规范时要用单引号或者双引号括起来,否则报错
            };
            console.log(obj.a);  //1
            console.log(obj.$abc);  //2
            console.log(obj['aflajroi23#$T']);  //3,要用中括号将带引号的属性名括起来才可以得到属性值,否则报错
            

属性名表达式的三种写法

 

 (1)、['变量名']
(2)、简单的表达式: ['xxx'+'yyy'+123],属性名为xxxyyy123
(3)、模板字符串:[`${变量名}123`],属性名为变量名123
            const key = 'age';
            const xiaohong = {
                name:'xiaohong',
                //属性名表达式的三种写法
                [key]:14,
                ['abc'+'bbc'+123]:23 ,  //简单的表达式,该属性名为abcbbc123
                [`${key}123`]:34  //模板字符串,该属性名为age123
            }

 

 

 

3、属性名表达式与简洁表达式,不能同时使用,会报错。

posted @ 2020-06-23 23:54  是桂  阅读(710)  评论(0编辑  收藏  举报