大部分情况下Object.getOwnPropertyNames()Object.keys(obj)的功能是一样的,我们一般也是用来获取一个JSON对象中所有属性,例如

const obj = {property1: 1,property2: 2,
};console.log(Object.keys(obj));
console.log(Object.getOwnPropertyNames(obj));

输出:

> Array ["property1", "property2"]
> Array ["property1", "property2"]

可以看到两种方法输出的结果是一样的,那么这两种方法完全一样吗?答案一般来讲不是,如果一样何必大动干戈定义两种方法
那么这两种方法区别在哪里呢?那就是Object.getOwnPropertyNames返回的是对象所有自己的属性,而Object.keys(obj)则返回的是所有可枚举属性,也就是属性下的enumerable: false,看例子:

const obj = {};
Object.defineProperties(obj, {property1: {enumerable: true, value: 1},property2: {enumerable: false, value: 2},
});console.log(Object.keys(obj));
console.log(Object.getOwnPropertyNames(obj));

输出:

> Array ["property1"]
> Array ["property1", "property2"]

可以看到输出结果不一样了,enumerable: falseObject.getOwnPropertyNames干掉了。

JavaScript中Object.getOwnPropertyNames()与Object.keys(obj)的区别相关推荐

  1. javascript 中的window, document, screen都有什么区别?

    谷歌之后,从stackoverflow上找到的高赞答案: https://stackoverflow.com/questions/9895202/what-is-the-difference-betw ...

  2. javascript中var、let、const声明的区别

    我在上一篇文章javascript中词法环境.领域.执行上下文以及作业详解中的最后稍微提到了有关var.let.const声明的区别,在本篇中我会重点来分析它们之间到底有什么不同. 提到var.let ...

  3. JavaScript中的单引号和双引号的区别

    JavaScript中的单引号和双引号其实没啥区别,看你自己习惯了.但若双引号中再使用双引号,我们可采取"外双内单"或者"外单内双"的格式:如果需要的是双引号本 ...

  4. javascript中打印对象显示[object object]_js如何打印object对象

    这篇文章主要介绍了js如何打印object对象,需要的朋友可以参考下 js调试中经常会碰到输出的内容是对象而无法打印的时候,光靠alert只能打印出object标示,却不能打印出来里面的内容,甚是不方 ...

  5. javascript中打印对象显示[object object]_扒一扒JavaScript中不常见的一些object

    前言 今天仔细阅读了MDN的这篇guide:Using XMLHttpRequest,在里面发现了好多以前听都没听过的概念,尤其是那些不为人知的Object,所以在这里特地把它们拎出来讲一下,不求多深 ...

  6. JavaScript中innerText,innerHTML,outerText,outerHTML使用心得和区别

    <div id = "test">     <span style="color:red">test1</span>     ...

  7. JavaScript 中 call、apply和bind的用法区别

    ECMAScript 规范给所有函数都定义了 call 与 apply 两个方法,它们的应用非常广泛,它们的作用也是一模一样,只是传参的形式有区别而已. 其实是一个很简单的东西,认真看十分钟就从一脸懵 ...

  8. javascript中编码与解码的decodeURI()、decodeURIComponent()区别

    1. 定义和用法 decodeURI() 函数可对 encodeURI() 函数编码过的 URI 进行解码.decodeURIComponent() 函数可对 encodeURIComponent() ...

  9. JavaScript中 onclick()、click()触发点击事件的区别

    function load(){ //下面两种方法效果是一样的document.getElementById("target").onclick();document.getEle ...

最新文章

  1. 一文读懂线性回归、岭回归和Lasso回归
  2. 新同事不讲武德,乱写 SQL 偷袭我!!
  3. HarmonyOS 2面世!是没有退路还是时机成熟?中国操作系统崛起元年或已到来
  4. 树形菜单 php,简单的树形菜单_php
  5. dhcp failover linux,ISC dhcp failover的mclt参数很重要啊
  6. Pyalgotrade量化交易回测框架
  7. windbg调试HEAP
  8. 华为P30现身华为新加坡官网:坐实水滴屏
  9. 编译原理_P1001
  10. 【已解决】FAILURE: Build failed with an exception......
  11. 昂达v819i安装win8.1时报错
  12. Android 平台下的即时通讯
  13. 图机器学习——1.1 传统方法:基于节点
  14. Vue进阶(幺捌零):Vue优质开源项目汇总(持续更新中...)
  15. 华为HMS:风雨突然,仍求自我
  16. 一张纸厚度是多少毫米_一张A4纸的厚度是多少mm?
  17. 自定义锁屏图片 win7
  18. 品诺——浪漫的意大利之夜
  19. Matlab(2)基本操作与矩阵输入
  20. IOT-OS之RT-Thread(六)--- 线程间同步与线程间通信

热门文章

  1. mysql 构造 linq语句_[转]查看LINQ生成SQL语句的几种方法
  2. 群答疑随手记:花椰妹在纸上写下了若干个连续的正整数,她把这些数遮挡住,只告诉蒜头君一共有k个数,它们的和为n,请蒜头君猜猜纸上是哪些数。现在蒜头君向你求助,帮他解决这个问题。(连续整数和)
  3. 谷歌浏览器设置保护色
  4. python中好用的库(一)
  5. 使用加速度计进行DIY手势控制的基于Arduino的空中鼠标
  6. HDU 3341 Lost's revenge(AC自动机+状态压缩DP)
  7. 面试算法 柠檬水找零
  8. 安装算量软件移动项操作方法
  9. 期初暂估导入报表查看
  10. 国外厂商纷纷投入开源界 自述其中原因