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 相关文章推荐
JavaScript的面向对象(一)
Nov 09 Javascript
js 对联广告、漂浮广告封装类(IE,FF,Opera,Safari,Chrome
Nov 26 Javascript
javascript demo 基本技巧
Dec 18 Javascript
JavaScript判断一个URL链接是否有效的实现方法
Oct 08 Javascript
基于javascript实现图片切换效果
Apr 17 Javascript
原生js验证简洁注册登录页面
Dec 17 Javascript
详解JS对象封装的常用方式
Dec 30 Javascript
实战node静态文件服务器的示例代码
Mar 08 Javascript
对angular 监控数据模型变化的事件方法$watch详解
Oct 09 Javascript
如何手动实现es5中的bind方法详解
Dec 07 Javascript
微信小程序官方动态自定义底部tabBar的例子
Sep 04 Javascript
如何搭建一个完整的Vue3.0+ts的项目步骤
Oct 18 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
150kHz到30Mhz完全冲浪手册
2020/03/20 无线电
点评山进PR-D3L三波段收音机
2021/03/02 无线电
php stripslashes和addslashes的区别
2014/02/03 PHP
PHP图片处理之使用imagecopyresampled函数裁剪图片例子
2014/11/19 PHP
php使用GD库创建图片缩略图的方法
2015/06/10 PHP
PHP实现在数据库百万条数据中随机获取20条记录的方法
2017/04/19 PHP
Laravel框架模板继承操作示例
2018/06/11 PHP
javascript 操作cookies及正确使用cookies的属性
2009/10/15 Javascript
在vs2010中调试javascript代码方法
2011/02/11 Javascript
JS定时刷新页面及跳转页面的方法
2013/07/04 Javascript
jquery右下角弹出提示框示例代码
2013/10/08 Javascript
JS文字球状放大效果代码分享
2015/08/19 Javascript
浅析JavaScript中浏览器的兼容问题
2016/04/19 Javascript
BooStrap对导航条的改造实践小结
2016/09/21 Javascript
jQuery基本筛选选择器实例代码
2017/02/06 Javascript
Bootstrap模态框插入视频的实现代码
2017/06/25 Javascript
JavaScript requestAnimationFrame动画详解
2017/09/14 Javascript
微信小程序扫描二维码获取信息实例详解
2019/05/07 Javascript
精读《Vue3.0 Function API》
2020/05/20 Javascript
Python语言编写电脑时间自动同步小工具
2013/03/08 Python
Python中列表、字典、元组、集合数据结构整理
2014/11/20 Python
python遍历文件夹下所有excel文件
2018/01/03 Python
python爬取指定微信公众号文章
2018/12/20 Python
Python txt文件加入字典并查询的方法
2019/01/15 Python
详解pandas库pd.read_excel操作读取excel文件参数整理与实例
2019/02/17 Python
基于Tensorflow批量数据的输入实现方式
2020/02/05 Python
Python使用type动态创建类操作示例
2020/02/29 Python
英格兰橄榄球商店:England Rugby Store
2016/12/17 全球购物
加拿大著名的奢侈品购物网站:SSENSE(支持中文)
2020/06/25 全球购物
装修五一活动策划案
2014/01/23 职场文书
写求职信有什么意义
2014/02/17 职场文书
机关班子查摆问题及整改措施
2014/10/28 职场文书
课外活动总结
2015/02/04 职场文书
2015年精神文明建设工作总结
2015/04/21 职场文书
创业计划书之餐饮
2019/09/02 职场文书
解决Nginx 配置 proxy_pass 后 返回404问题
2021/03/31 Servers