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"]
  • 相关阅读:
    C# List<string>和List<int>互相转换
    sourcetree跳过注册的方法
    列举 contentType: 内容类型(MIME 类型)
    nginx 使用过程中一些基础性问题总结
    MVC3升级到MVC4模型验证信息显示为英文问题及解决方案
    ckeditor:复制内容到ckeditor时,只保留文本,忽略其样式解决方法
    MVC从视图传参到Controller几种方式
    Window Service 计划任务
    Git命令行连Github与TortoiseGit 连Github区别
    For xml path
  • 原文地址:https://www.cnblogs.com/steamed-twisted-roll/p/10913408.html
Copyright © 2011-2022 走看看