对象的属性有自身属性和原型属性之分,自身属性是对象自己的属性,原型属性是存在于原型链上的属性。

可以用Object.prototype.hasOwnProperty()判断是自身属性还是原型属性。(in操作符只可以判断对象是否有某个属性,不能判断是自身的,还是原型上的)

对象属性也有可枚举和不可枚举之分,可枚举属性的属性描述符enumerable为true,不可枚举属性的为false。

原生对象的大多数属性都是不可枚举的,比如数组和字符串的length,对象原型上的一些方法和属性,比如toString、constructor、hasOwnProperty等等

下面看下都有哪些方式可以获取对象的属性

Object.keys()

返回自身的可枚举属性组成的数组 (不包含symbol)

Object.getOwnPropertyNames()

返回所有的自身属性 组成的数组 (不包含symbol)

Object.getOwnPropertySymbols()

返回自身所有的Symbol属性组成的数组

for…in

遍历对象的所有可枚举属性

区别

可枚举 可枚举和不可枚举
仅自身属性 Object.keys Object.getOwnPropertyNames
自身和原型属性 for…in

没有原生的方法可以获取对象上所有的属性,包含自身和原型、可枚举和不可枚举,需要自己实现,示例如下:

function getAllkeys (obj) {const keys = []let temp = objwhile (temp) {keys.push.apply(keys, Object.getOwnPropertyNames(temp))keys.push.apply(keys, Object.getOwnPropertySymbols(temp))temp = Object.getPrototypeOf(temp)}return keys
}

for…of 和 for…in的区别

for let i in obj 是以任意顺序遍历对象的可枚举属性,i是key

for let value of iterable 是按顺序迭代一个可迭代对象,i是值

iterable可迭代对象包括:Array、Map、Set、String、TypedArray、arguments

JS获取对象属性的各种方式和区别(自身/原型属性、可枚举/不可枚举)相关推荐

  1. php 获取js对象的属性值,js获取对象,数组所有属性键值(key)和对应值(value)的方法示例...

    本文实例讲述了js获取对象,数组所有属性键值(key)和对应值(value)的方法.分享给大家供大家参考,具体如下: var values=function(object) { var values ...

  2. js获取对象的父元素,子元素,兄弟元素

    今天测试我昨天写好的js插件,发现昨天考虑欠妥,导致[修改]做不了了!主要原因是我以前都是遍历表格,在每条记录后面添加修改按钮.现在用局部刷新表格的方法,每次都自动生成表格内容,以致于无法在记录后面生 ...

  3. JS获取对象的第一个值

    JS获取对象(obj)的第一个值 obj[Object.keys(obj)[0]]

  4. js获取对象数组中的id集合

    js获取对象数组中的id集合 const ids = Array.from(this.checkList,({ id }) => id); // ["16921C72E0C64002& ...

  5. js获取对象里数据条数

    js获取对象里数据条数 对象无法使用length获取长度,需要使用js原生方法里的Object.keys方法进行获取,具体用法如下: let obj = {'a1': {'name': '张三''}, ...

  6. js获取时间戳的几种方式、时间转时间戳

    js获取时间戳的几种方式.时间转时间戳 前言 这两个方法的返回值都是 1970/1/1 午夜距离该日期时间的毫秒数 如何使用 下面的例子中,我们将取得从 1970/01/01 到 2017/03/19 ...

  7. js获取对象数组中指定属性值对象_3分钟学会操作JavaScript内置对象,快来试试吧...

    1 - 内置对象 1.1 内置对象 JavaScript 中的对象分为3种:自定义对象 .内置对象. 浏览器对象. 前面两种对象是JS 基础 内容,属于 ECMAScript: 第三个浏览器对象属于 ...

  8. JS中对象创建的五中方式

    <!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8" ...

  9. js获取对象的方法,根据id、根据name、根据标签名、根据类名

    正文 下面的代码中展示了常用的js获取html对象的方法,并且添加了详细的注释说明.快来看看吧. // 页面加载完毕以后再执行window.onload=function(){//1.根据id获取对象 ...

最新文章

  1. UIView淡入淡出动画
  2. Day3:数据类型(布尔值、集合)
  3. ABAP业务涉及到的相关数据库表 .
  4. 连续写博客2个月之后,我感觉自己的心态有了一些变化
  5. xml 转map dom4j
  6. java自学 day8
  7. AngularJS Filters
  8. CCF NOI1140 高精度乘法
  9. safari 浏览器提示添加到主屏幕_Safari浏览器的秘密技能
  10. PHP的面向对象模型(转贴)
  11. 1010 Radix(25 分)
  12. matlab自动交易系统设计4 随笔
  13. LateX安装下载使用详细教程
  14. 日本語トレーニング(二十一)
  15. WIN7下硬盘安装centos 7
  16. 不可随便给一个人说晚安『你知道它的真正意义吗?不想以后后悔就进来看看吧』
  17. 约数国王(A king)
  18. Qt 测量函数运行耗时
  19. 【CS231n】十五、深度学习的高效算法和硬件设计
  20. 铸铁的弹性模量和泊松比_常用材料弹性模量和泊松比.docx

热门文章

  1. python中格式化输出三种形式学习总结
  2. MySQL快速清空大表数据(truncate table table_name;)
  3. Linux编程基础:第5章Linux文件系统与操作 课后习题
  4. 最优化方法:L1和L2正则化regularization
  5. Linux 基础命令快速入门
  6. mysql索引的面试题
  7. 关于“好奇号”火星车(Rover)的核电池
  8. 计算机中的b,B,KB,MB,GB,TB/T之间的换算
  9. Android ANR问题原因分析
  10. utf—8在苹果手机上乱码_【研究】解决iPhone中文邮件乱码的四种方法