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"]

Object.keys()返回对象自身可枚举属性组成的数组的更多相关文章

  1. 【Javascript-基础-getOwnPropertyNames】Object.getOwnPropertyNames() 获取对象自身可枚举属性

    可枚举属性和不可枚举属性 在JavaScript中,对象的属性分为可枚举和不可枚举之分,它们是由属性的enumerable值决定的.可枚举性决定了这个属性能否被for-in查找遍历到. 可枚举属性 e ...

  2. Object.keys()返回对象的属性

    <script> // 传入对象,返回属性名 let obj = { 'a': '123', 'b': '456' } console.log(Object.keys(obj)) //[& ...

  3. JS对象的可枚举属性和不可枚举属性

    昨天在写文章(转载)的时候发现了有些对象的方法是分可枚举性和不可枚举性的.简单的查了一下资料,今天来捋一捋啥是对象的可枚举啥是不可枚举. 可枚举性: 对象的每一个属性都有一个描述对象,用来描述和控制该 ...

  4. get_class_vars 返回由类的默认属性组成的数组

    get_class_vars (PHP 4, PHP 5) get_class_vars - 返回由类的默认属性组成的数组 说明 array get_class_vars ( string $clas ...

  5. Object.keys 返回由一个给定对象的自身可枚举属性组成的数组

    在实际开发中,我们有时需要知道对象的所有属性, 原生js给我们提供了一个很好的方法:Object.keys(),该方法返回一个数组 http://blog.csdn.net/u014035151/ar ...

  6. Object.keys() 遍历对象

    Object.keys()方法的运用与数组遍历 Object.keys()用于获得由对象属性名组成的数组,可与数组遍历相结合使用,用起来效果杠杠滴.数组遍历可以用for()或forEach()来实现, ...

  7. JavaScript indexOf() 方法,获取元素的位置;Object.keys()获取对象的所有key的数组

    定义和用法 indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置. 语法 stringObject.indexOf(searchvalue,fromindex) 参数 描述 sea ...

  8. JS中的可枚举属性与不可枚举属性以及扩展

    在JavaScript中,对象的属性分为可枚举和不可枚举之分,它们是由属性的enumerable值决定的.可枚举性决定了这个属性能否被for…in查找遍历到. 一.怎么判断属性是否可枚举 js中基本包 ...

  9. for in 与 Object.keys 与 hasOwnProperty区别

    1.结论 for in遍历对象所有可枚举属性 包括原型链上的属性 Object.keys遍历对象所有可枚举属性 不包括原型链上的属性 hasOwnProperty 检查对象是否包含属性名,无法检查原型 ...

随机推荐

  1. koa2环境搭建

    npm install -g koa-generator koa2 ssy-koa2 cd ssy-koa2 npm install

  2. Zabbix - LINUX下CPU,硬盘,流量,内存监控

    转载自:https://blog.csdn.net/jxzhfei/article/details/47191431 1.LINUX下zabbix客户端安装 [root@mongodb114 ~]# ...

  3. JAVA多线程程序ProgressBar2

    JAVA多线程程序ProgressBar2 题目简介: 思路分析:与上一篇:JAVA多线程程序ProgressBar类似,本篇避免过于冗杂,所以在此没有给出. 实验代码: import java.aw ...

  4. SQL学习(八)日期处理

    不同数据库中,针对日期处理的函数不同 Oracle中常用日期函数 (1.sysdate: 获取当前系统时间 如: select sysdate() ----返回当前时间,包括年月日 时分秒 (2.to ...

  5. Python学习笔记:读取Excel的xlrd模块

    一.安装xlrd 可以使用命令行安装也可使用pycharm进行安装 表示xlrd库已经安装成功,安装成功后,我们就可以导入使用了. 二.xlrd说明 (1.单元格常用的数据类型包括 0:empty(空 ...

  6. centos 7.3镜像制作

    1.在KVM环境上准备虚拟机磁盘 [root@localhost ~]# qemu-img create -f qcow2 -o size=50G /opt/CentOS-7-1511-x86_64_ ...

  7. MSSQL字符串取相应的第几个数组值

    create function Get_StrArrayStrOfIndex( @str varchar(5000), --要分割的字符串 @split varchar(10), --分隔符号 @in ...

  8. swoole前置基础知识 进程间通信

    进程间通信(IPC,InterProcess Communication)是指在不同进程之间传播或交换信息. IPC的方式通常有管道(包括无名管道和命名管道).消息队列.信号量.共享存储.Socket ...

  9. Day05:集合操作——线性表(二) / 查找表 / 文件操作——File(一)

    文件操作:https://www.cnblogs.com/wsnb8/p/11403626.html

  10. CTF攻防练习之综合训练1

    主机:192.168.32.152 靶机:192.168.32.166 首先使用nmap,nikto -host ,dirb扫描,探测靶场开放了 21,22,80d端口已经发现有一下关键信息 进入lo ...