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 相关文章推荐
setTimeout与setInterval在不同浏览器下的差异
Jan 24 Javascript
js+css实现增加表单可用性之提示文字
Jun 03 Javascript
jquery DIV撑大让滚动条滚到最底部代码
Jun 06 Javascript
用jquery修复在iframe下的页面锚点失效问题
Aug 22 Javascript
jQuery多媒体插件jQuery Media Plugin使用详解
Dec 19 Javascript
jQuery原生的动画效果
Jul 10 Javascript
jQuery实现两列等高并自适应高度
Dec 22 Javascript
canvas学习之API整理笔记(二)
Dec 29 Javascript
在Vue项目中引入腾讯验证码服务的教程
Apr 03 Javascript
JS中如何轻松遍历对象属性的方式总结
Aug 06 Javascript
JS面向对象编程——ES6 中class的继承用法详解
Mar 03 Javascript
JavaScript代码实现微博批量取消关注功能
Feb 05 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获取MSN好友列表类的实现代码
2013/06/23 PHP
thinkPHP删除前弹出确认框的简单实现方法
2016/05/16 PHP
PHP用FTP类上传文件视频等的简单实现方法
2016/09/23 PHP
Thinkphp5+Redis实现商品秒杀代码实例讲解
2020/12/29 PHP
原生js写的放大镜效果
2012/08/22 Javascript
javascript学习笔记(七)Ajax和Http状态码
2014/10/08 Javascript
js全选实现和判断是否有复选框选中的方法
2015/02/17 Javascript
微信小程序开发之视频播放器 Video 弹幕 弹幕颜色自定义实例
2016/12/08 Javascript
微信小程序 蓝牙的实现实例代码
2017/06/27 Javascript
Vue-cli项目获取本地json文件数据的实例
2018/03/07 Javascript
Node.js模块全局安装路径配置方法
2018/05/17 Javascript
javascript使用正则实现去掉字符串前面的所有0
2018/07/23 Javascript
jquery.pager.js实现分页效果
2019/07/29 jQuery
vue中上传视频或图片或图片和文字一起到后端的解决方法
2019/12/01 Javascript
Vue简单实现原理详解
2020/05/07 Javascript
Python 返回汉字的汉语拼音
2009/02/27 Python
Python构建XML树结构的方法示例
2017/06/30 Python
python time.sleep()是睡眠线程还是进程
2019/07/09 Python
200行python代码实现2048游戏
2019/07/17 Python
解决Python3下map函数的显示问题
2019/12/04 Python
django queryset相加和筛选教程
2020/05/18 Python
Canvas实现保存图片到本地的示例代码
2018/06/28 HTML / CSS
乌克兰排名第一的在线旅游超市:Farvater.Travel
2020/01/02 全球购物
给幼儿园老师的表扬信
2014/01/19 职场文书
年终考核评语
2014/01/19 职场文书
yy婚礼主持词
2014/03/14 职场文书
法制报告会主持词
2014/04/02 职场文书
教师对学生的寄语
2014/04/03 职场文书
合伙经营协议书
2014/04/18 职场文书
2014矛盾纠纷排查调处工作总结
2014/12/09 职场文书
给老师的一封感谢信
2015/01/20 职场文书
原告代理词范文
2015/05/25 职场文书
2019年国庆祝福语(70句)
2019/09/19 职场文书
Python趣味挑战之教你用pygame画进度条
2021/05/31 Python
Python使用永中文档转换服务
2022/05/06 Python
教你使用Ubuntu搭建DNS服务器
2022/09/23 Servers