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. Anaconda 改为国内镜像的方法

    Anaconda的conda 特别好用 但如果用国外的镜像,慢的出奇 可以改为了国内镜像会好很多 conda config --add channels https://mirrors.tuna.ts ...

  2. [idea]创建一个控制台程序

    新建项目时,选择JBoss即可.

  3. 前端之路(一)之W3C是什么?

    W3C 指万维网联盟(World Wide Web Consortium) W3C 最重要的工作是发展 Web 规范(称为推荐,Recommendations),这些规范描述了 Web 的通信协议(比 ...

  4. linux常用命令(11)less命令

    less 工具也是对文件或其它输出进行分页显示的工具,应该说是linux正统查看文件内容的工具,功能极其强大.less 的用法比起 more 更加的有弹性.在 more 的时候,我们并没有办法向前面翻 ...

  5. centos 7安装python3及相关模块

    一.python3安装 1.cd /usr/bin 2.mv python python.bak 3.https://www.python.org/ftp/python/网站选择合适的版本 4.wge ...

  6. Ansible 直接请求远程主机执行命令

    ansible -all -i host1.abc.com, -m ping #注意主机名称后面的逗号,就算一台主机也是必须的.多台主机可以用逗号隔开 ansible all -i host1.abc ...

  7. JAVA文件上传 ServletFileUpLoad 实例

    1.  jsp <%@ page language="java" contentType="text/html" pageEncoding="u ...

  8. 小程序请求豆瓣API报403解决方法

    微信小程序使用wx.request API请求豆瓣公开api的时候,会报一个403(Forbidden)的错误.这是为什么呢?是由于来自小程序的调用过多,豆瓣来自于小程序的调用被禁止.这里收集以下三种 ...

  9. 安卓的一些UI美化框架的使用

    目录 一.前言 二.Android-Bootstrap 三.Sweet Alert Dialog 四.ExplosionField 一.前言 在这里记录一些用到过的觉得还算不错的UI第三方开源美化框架 ...

  10. 【VS开发】MFC运行时库与debug、release版本之间的配置关系

    参考内容: 前段时间从网上下来一个有意思的代码,用VS2010打开时需要将工程转换为2010的工程,转化后却出现了编译不通过的问题,类似这样的错误:c:\program files\microsoft ...