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 相关文章推荐
jQuery 使用手册(三)
Sep 23 Javascript
2010年最佳jQuery插件整理
Dec 06 Javascript
jquery实现简单的拖拽效果实例兼容所有主流浏览器(优化篇)
Jun 28 Javascript
鼠标悬浮停留三秒后自动显示大图js代码
Sep 09 Javascript
JavaScript学习笔记之Function对象
Jan 22 Javascript
纯jquery实现模仿淘宝购物车结算
Aug 20 Javascript
jQuery实现页面评论栏中访客信息自动填写功能的方法
May 23 Javascript
JavaScript每天必学之事件
Sep 18 Javascript
vue2 自定义动态组件所遇到的问题
Jun 08 Javascript
微信小程序的日期选择器的实例详解
Sep 29 Javascript
Javascript实现运算符重载详解
Apr 07 Javascript
vue打开子组件弹窗都刷新功能的实现
Sep 21 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
第十五节--Zend引擎的发展
2006/11/16 PHP
用PHP控制用户的浏览器--ob*函数的使用说明
2007/03/16 PHP
php中文本操作的类
2007/03/17 PHP
php简单静态页生成过程
2008/03/27 PHP
snoopy 强大的PHP采集类使用实例代码
2010/12/09 PHP
提升PHP性能的21种方法介绍
2013/06/25 PHP
PHP编程中的Session阻塞问题与解决方法分析
2017/08/07 PHP
thinkphp 抓取网站的内容并且保存到本地的实例详解
2017/08/25 PHP
在IE上直接编辑网页内容的js代码(IE地址栏js)
2009/04/27 Javascript
jQuery 使用手册(六)
2009/09/23 Javascript
JS实现模仿微博发布效果实例代码
2013/12/16 Javascript
JavaScript中数据结构与算法(四):串(BF)
2015/06/19 Javascript
浅述Javascript的外部对象
2016/12/07 Javascript
纯jQuery实现前端分页功能
2017/03/23 jQuery
js+html5实现手机九宫格密码解锁功能
2018/07/30 Javascript
angularJs中$scope数据序列化的实例
2018/09/30 Javascript
angular 服务的单例模式(依赖注入模式下)详解
2018/10/22 Javascript
[01:02:48]2018DOTA2亚洲邀请赛 4.1 小组赛 A组 LGD vs OG
2018/04/02 DOTA
python将多个文本文件合并为一个文本的代码(便于搜索)
2011/03/13 Python
Python多线程编程(八):使用Event实现线程间通信
2015/04/05 Python
在Python中操作文件之truncate()方法的使用教程
2015/05/25 Python
Tornado 多进程实现分析详解
2018/01/12 Python
Django REST Framework序列化外键获取外键的值方法
2019/07/26 Python
Python 识别12306图片验证码物品的实现示例
2020/01/20 Python
Django用户身份验证完成示例代码
2020/04/03 Python
Python 保存加载mat格式文件的示例代码
2020/08/04 Python
python元组拆包实现方法
2021/02/28 Python
CSS3实现头像旋转效果
2017/03/13 HTML / CSS
html2canvas截图空白问题的解决
2020/03/24 HTML / CSS
美国餐厅用品和厨房设备批发网站:KaTom Restaurant Supply
2018/01/27 全球购物
莱德杯高尔夫欧洲官方商店:Ryder Cup Shop
2019/08/14 全球购物
Linux操作面试题
2015/02/11 面试题
班会关于环保演讲稿
2013/12/29 职场文书
少先队入队仪式主持词
2015/07/04 职场文书
大学生就业指导课心得体会
2016/01/15 职场文书
带你彻底理解JavaScript中的原型对象
2021/04/14 Javascript