美文网首页
对象的拓展

对象的拓展

作者: Home_2453 | 来源:发表于2019-03-11 10:43 被阅读0次

    1、属性的简介表示法
    ES6允许直接写入变量和函数,作为对象的属性和方法。这样的书写更加简介。

    let foo = 'foo';
    let obj = {foo};
    console.log(obj)    //{foo:'foo'}
    

    除了属性简写,方法也可以简写。

    const o = {
      methods(){
        return 'heool'
      }
    }
    

    2、属性名表达式
    javascript定义对象的属性,有两种方法

    //方法一
    obj.foo = true;
    //方法二
    obj['a' + 'b'} = 123;
    上面代码的方法一是直接用标识符作为属性名,方法二是用表达式作为属性名,这时要将表达式放在方括号内。
    

    但是,如果使用字面量定义对象(使用大括号),在ES5中只能使用方法一(标识符)定义属性。

    let obj = {
      a:1,
      b:2
    }
    ES6允许字面量定义对象时,用方法二(表达式)作为对象的属性名,即将表达式放在方括号内。
    let foo = 'foo';
    let obj = {
        ['a']:1,
        ['b']:2
    }
    

    表达式还可以用于定义方法名。

    let obj = {
        ['h' + 'ello'](){
          return 'hi';
        }
    }
    obj.hello()    //hi
    

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

    let person = {
      sayName(){
        console.log('hello!')
      }
    }
    person.sayName.name    //'sayName'
    

    4、属性的可枚举性和遍历

    let obj = {1:'a',2:'b'}
    console.log(Object.keys(obj))    //[1,2]
    

    5、对象的拓展运算符
    解构赋值
    对象的解构赋值用于从一个对象取值,相当于将目标对象自身的所有可遍历的,但尚且被读取的属性,分配到指定对象上面。所有的键和它们的值,都会拷贝到新对象上面。

    let {a,b,c} = {a:1,b:2,c:3,d:4,e:5}
    console.log(a,b,c)    //1,2,{c:3,d:4,e:5}
    

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

    let z = {a:1,b:2}
    let n = {...z}
    n    //{a:1,b:2}
    

    由于数组是特殊的对象,所以对象的拓展运算符也可以用于数组。

    let foo = {...['a','b','c']}
    foo
    //{0: "a", 1: "b", 2: "c"}
    

    对象合并

    let z = {a:1,b:2}
    let y = {c:3,d:4}
    let zy = {...z,...y}
    console.log(zy)    //{a: 1, b: 2, c: 3, d: 4}
    

    相关文章

      网友评论

          本文标题:对象的拓展

          本文链接:https://www.haomeiwen.com/subject/acjvpqtx.html