zoukankan      html  css  js  c++  java
  • Object.keys()返回对象自身可枚举属性组成的数组

    Object.keys()方法是对一个对象的key遍历,会把key组成一个数组返回
    示例:
    // 参数为数组时,返回的是数组的索引
    let arr1 = [1, 2, '3']
    console.log(Object.keys(arr1)) // (3)["0", "1", "2"]
    
    let arr2 = [1, 2, '3', 'p', 're']
    console.log(Object.keys(arr2)) // (5)["0", "1", "2", "3", "4"]
    
    // 参数为对象,返回的是对象的key属性
    let obj1 = {
      name: 'jack',
      age: 16,
      height: 178
    }
    console.log(Object.keys(obj1)) // (3)["name", "age", "height"]
    
    let obj2 = {
      name: 'jack',
      age: 16,
      hello: function () {
        console.log('hello')
      }
    }
    console.log(Object.keys(obj2)) // (3)["name", "age", "hello"]
    
    // Object.keys()只能返回对象的可枚举属性,不可枚举的不能返回
    let obj3 = {
      name: 'jack',
      age: 16,
      hello: function () {
        console.log('hello')
      }
    }
    // Object.defineProperty(obj, key, property)给对象设置属性或修改属性,obj设置的对象,key需要新增或修改的属性,propert属性配置值
    Object.defineProperty(obj3, 'hobby', {
      value: 'printer',
      enumerable: false // enumerable设置对象的属性是否可枚举,默认为true,
    })
    console.log(obj3, Object.keys(obj3))
    // {name: "jack", age: 16, hello: ƒ, hobby: "printer"}
    // (3)["name", "age", "hello"]
    
    // 如果参数不是一个对象,在es2015会强制转换为对象,在之前版本会报错
    let string = 'foo'
    console.log(Object.keys(string)) // (3)["0", "1", "2"]
    
    // 如果需要返回对象的全部属性(包括可枚举和不可枚举)可以使用Object.getOwnPropertyNames()方法
    // Object.getOwnPropertyNames()方法根据字面意义就是返回对象自身全部属性名
    let obj3 = {
      name: 'jack',
      age: 16,
      hello: function () {
        console.log('hello')
      }
    }
    Object.defineProperty(obj3, 'hobby', {
      value: 'printer',
      enumerable: false
    })
    console.log(obj3, Object.getOwnPropertyNames(obj3))
    // {name: "jack", age: 16, hello: ƒ, hobby: "printer"}
    // (4)["name", "age", "hello", "hobby"]
  • 相关阅读:
    hdu 1568 (log取对数 / Fib数通项公式)
    整数对(hdu1271)找规律
    Pupu(hdu3003)数论
    哈密顿绕行世界问题(hdu2181)
    Saving HDU(hdu2111,贪心)
    素数回文(hdu1431)
    Hashmat the brave warrior(UVa10055)简单题
    Moon Game (凸四边形个数,数学题)
    Zipper(poj2192)dfs+剪枝
    不要62(hdu2089)
  • 原文地址:https://www.cnblogs.com/steamed-twisted-roll/p/10913408.html
Copyright © 2011-2022 走看看