对象

作者: 懂会悟 | 来源:发表于2020-09-26 08:55 被阅读0次

    1、属性的简洁表示法

    ES6 允许直接写入变量和函数,作为对象的属性和方法。此时,属性名为变量名, 属性值为变量的值。

    // 对象
    const foo = 'bar'
    const baz = {foo}
    baz // {foo: "bar"}
    
    // 等同于
    const baz = {foo: foo}
    
    function f(x, y) {
      return {x, y}
    }
    
    // 等同于
    function f(x, y) {
      return {x: x, y: y}
    }
    
    const o = {
      method() {
        return "Hello!"
      }
    }
    
    // 等同于
    
    const o = {
      method: function() {
        return "Hello!"
      }
    }
    

    2、属性的可枚举性与遍历

    属性的可枚举性

    对象的每个属性都有一个描述对象(Descriptor),用来控制该属性的行为。Object.getOwnPropertyDescriptor方法可以获取该属性的描述对象。描述对象的enumerable属性,称为”可枚举性“,如果该属性为false,就表示'不可枚举'某些操作会忽略当前属性

    有四个操作会忽略enumerable为false的属性

    • for...in循环:只遍历对象自身的和继承的可枚举的属性
    • Object.keys():返回对象自身的所有可枚举的属性的键名
    • JSON.stringify():只串行化对象自身的可枚举的属性
    • Object.assign(): 忽略enumerable为false的属性,只拷贝对象自身的可枚举的属性
    属性的遍历

    ES6 一共有5种方法可以遍历对象的属性

    • for...in循环遍历对象自身的和继承的可枚举属性(不含 Symbol 属性)
    • Object.keys返回一个数组,包括对象自身的(不含继承的)所有可枚举属性(不含 Symbol 属性)的键名
    • Object.getOwnPropertyNames返回一个数组,包含对象自身的所有属性(不含 Symbol 属性,但是包括不可枚举属性)的键名
    • Object.getOwnPropertySymbols返回一个数组,包含对象自身的所有 Symbol 属性的键名
    • Reflect.ownKeys返回一个数组,包含对象自身的所有键名,不管键名是 Symbol 或字符串,也不管是否可枚举
    const obj = {name: 'tom', age: 18
    
    Reflect.ownKeys(obj)
    
    // ["name", "age"]
    

    3、对象的新增方法

    1、Object.assign()

    Object.assign():用于将所有可枚举属性的值从一个或多个源对象复制到目标对象。返回目标对象

    let target = { name: 'Tom', age: 20 }
    let source = { work: 'engineer' }
    let result = Object.assign(target, source)
    
    console.log(target)
    // { name: 'Tom', age: 20, work: 'engineer' }
    console.log(source)
    // { work: 'engineer' }
    console.log(result)
    // { name: 'Tom', age: 20, work: 'engineer' }
    

    2、Object.is()

    Object.is():用于判断两个值是否相等,包含number、string、Object.返回布尔值

    let target = { name: 'Tom', age: 20 }
    let source = { work: 'engineer' }
    let result = Object.assign(target, source)
    console.log(Object.is(target, result))
    // true-
    

    3、Object.keys()、Object.values()、Object.entries()
    • Object.keys():返回一个给定对象的自身可枚举属性key组成的数组
    • Object.values():返回一个给定对象自身所有可枚举属性value的数组
    • Object.entries():返回一个给定对象自身可枚举属性的键值对数组
    let info = { name: 'Tom', age: 18 }
    console.log(Object.keys(info))
    // [ 'name', 'age' ]
    console.log(Object.values(info))
    // [ 'Tom', 18 ]
    console.log(Object.entries(info))
    // [ [ 'name', 'Tom' ], [ 'age', 18 ] ]
    

    相关文章

      网友评论

          本文标题:对象

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