Object.keys() 和 Object.getOwnPropertyNames() 的区别详解


Posted in Javascript onMay 21, 2020

大部分情况下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.keys() 方法会返回一个由一个给定对象的自身可枚举属性组成的数组,数组中属性名的排列顺序和正常循环遍历该对象时返回的顺序一致 。

Object.getOwnPropertyNames()方法返回一个由指定对象的所有自身属性的属性名(包括不可枚举属性但不包括Symbol值作为名称的属性)组成的数组。

共同点:都是返回自身的属性,不会返回原型链上的。

区别: Object.keys()返回可枚举的,Object.getOwnPropertyNames()返回所有的。

Person = function(name){
  this.name = name || ''
}
Person.prototype.sayHello = function(){
  console.log('hello')
}
p = new Person('yangyang')
p.age = 18
Object.defineProperties(p, {
  age:{
    enumerable:false
  }
})
console.log(Object.keys(p)) // ["name"]
console.log(Object.getOwnPropertyNames(p)) // ["name", "age"]

参考资料:
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/keys
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertyNames

到此这篇关于Object.keys() 和 Object.getOwnPropertyNames() 的区别详解的文章就介绍到这了,更多相关Object.keys()和Object.getOwnPropertyNames()内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
快速保存网页中所有图片的方法
Jun 23 Javascript
newxtree.js代码
Mar 13 Javascript
基于IE下ul li 互相嵌套时的bug,排查,解决过程以及心得介绍
May 07 Javascript
JavaScript中的object转换函数toString()与valueOf()介绍
Dec 31 Javascript
JQuery选中checkbox方法代码实例(全选、反选、全不选)
Apr 27 Javascript
javascript实现全角半角检测的方法
Jul 23 Javascript
AngularJS中watch监听用法分析
Nov 04 Javascript
jQuery操作复选框(CheckBox)的取值赋值实现代码
Jan 10 Javascript
jQuery实现动态加载select下拉列表项功能示例
May 31 jQuery
js获取对象,数组所有属性键值(key)和对应值(value)的方法示例
Jun 19 Javascript
vue路由切换之淡入淡出的简单实现
Oct 31 Javascript
Antd的table组件表格的序号自增操作
Oct 27 Javascript
JavaScript实现HSL拾色器
May 21 #Javascript
js实现拾色器插件(ColorPicker)
May 21 #Javascript
原生js实现日期选择插件
May 21 #Javascript
vue+Element中table表格实现可编辑(select下拉框)
May 21 #Javascript
浅谈React中组件逻辑复用的那些事儿
May 21 #Javascript
记一次用ts+vuecli4重构项目的实现
May 21 #Javascript
JS实现图片幻灯片效果代码实例
May 21 #Javascript
You might like
PHP OPCode缓存 APC详细介绍
2010/10/12 PHP
关于PHP虚拟主机概念及如何选择稳定的PHP虚拟主机
2018/11/20 PHP
实例讲解PHP表单验证功能
2019/02/15 PHP
js change,propertychange,input事件小议
2011/12/20 Javascript
循环 vs 递归浅谈
2013/02/28 Javascript
基于javascript实现浏览器滚动条快到底部时自动加载数据
2015/11/30 Javascript
Angular2  NgModule 模块详解
2016/10/19 Javascript
完美解决input[type=number]无法显示非数字字符的问题
2017/02/28 Javascript
Vue.js 2.0学习教程之从基础到组件详解
2017/04/24 Javascript
Angular.JS中select下拉框设置value的方法
2017/06/20 Javascript
vue 组件高级用法实例详解
2018/04/11 Javascript
js事件on动态绑定数据,绑定多个事件的方法
2018/09/15 Javascript
jQuery实现查看图片功能
2020/12/01 jQuery
python中pycurl库的用法实例
2014/09/30 Python
用Python的Django框架完成视频处理任务的教程
2015/04/02 Python
python 远程统计文件代码分享
2015/05/14 Python
Python正规则表达式学习指南
2016/08/02 Python
Python基于分水岭算法解决走迷宫游戏示例
2017/09/26 Python
python奇偶行分开存储实现代码
2018/03/19 Python
Python反转序列的方法实例分析
2018/03/21 Python
使用Python读取安卓手机的屏幕分辨率方法
2018/03/31 Python
Centos7下源码安装Python3 及shell 脚本自动安装Python3的教程
2020/03/07 Python
html5使用canvas画三角形
2014/12/15 HTML / CSS
HTML5自定义属性前缀data-及dataset的使用方法(html5 新特性)
2017/08/24 HTML / CSS
南非最大的在线时尚商店:Zando
2019/07/21 全球购物
公司面试感谢信
2014/02/01 职场文书
暑期社会实践感言
2014/02/25 职场文书
财务担保书范文
2014/04/02 职场文书
青奥会口号
2014/06/12 职场文书
2014年学雷锋活动总结
2014/06/26 职场文书
开展党的群众路线教育实践活动剖析材料
2014/10/13 职场文书
事业单位个人总结
2015/02/12 职场文书
2016年“我们的节日·重阳节”主题活动总结
2016/04/01 职场文书
高考满分作文赏析(2篇)
2019/08/12 职场文书
90条交通安全宣传标语
2019/10/12 职场文书
ROS系统将python包编译为可执行文件的简单步骤
2021/07/25 Python