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 相关文章推荐
JS 类型转换常见方法小结
May 31 Javascript
jquery取消选择select下拉框示例代码
Feb 22 Javascript
jquery数组封装使用方法分享(jquery数组遍历)
Mar 25 Javascript
深入学习JavaScript对象
Oct 13 Javascript
javascript每日必学之条件分支
Feb 17 Javascript
jQuery实现获取元素索引值index的方法
Sep 18 Javascript
JavaScript“尽快失败”的原则实例详解
Oct 08 Javascript
jQuery通过ajax快速批量提交表单数据
Oct 25 Javascript
video.js使用改变ui过程
Mar 05 Javascript
vue多种弹框的弹出形式的示例代码
Sep 18 Javascript
详解Vue中watch的详细用法
Nov 28 Javascript
vue 输入电话号码自动按3-4-4分割功能的实现代码
Apr 30 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 第二节 数据类型之字符串类型
2012/04/28 PHP
php禁止浏览器使用缓存页面的方法
2014/11/07 PHP
php计划任务之ignore_user_abort函数实现方法
2015/01/08 PHP
php实现网站顶踩功能的完整前端代码
2015/07/19 PHP
Yii框架防止sql注入,xss攻击与csrf攻击的方法
2016/10/18 PHP
php获取开始与结束日期之间所有日期的方法
2016/11/29 PHP
phpStorm2020 注册码
2020/09/17 PHP
JS控件autocomplete 0.11演示及下载 1月5日已更新
2007/01/09 Javascript
10个实用的脚本代码工具
2010/05/04 Javascript
用nodejs访问ActiveX对象,以操作Access数据库为例。
2011/12/15 NodeJs
jQuery 处理页面的事件详解
2015/01/20 Javascript
jquery读取xml文件实现省市县三级联动的方法
2015/05/29 Javascript
Highcharts 多个Y轴动态刷新数据的实现代码
2016/05/28 Javascript
easyui tree带checkbox实现单选的简单实例
2016/11/07 Javascript
微信小程序开发之数据存储 参数传递 数据缓存
2017/04/13 Javascript
快速解决Vue项目在IE浏览器中显示空白的问题
2018/09/04 Javascript
全面了解JavaScript的作用域链
2019/04/03 Javascript
js实现树形数据转成扁平数据的方法示例
2020/02/27 Javascript
javascript实现贪吃蛇小游戏
2020/07/28 Javascript
VUE子组件向父组件传值详解(含传多值及添加额外参数场景)
2020/09/01 Javascript
[45:44]完美世界DOTA2联赛PWL S2 FTD vs PXG 第一场 11.27
2020/12/01 DOTA
Python复制目录结构脚本代码分享
2015/03/06 Python
关于Python元祖,列表,字典,集合的比较
2017/01/06 Python
Python使用回溯法子集树模板解决迷宫问题示例
2017/09/01 Python
python机器学习之神经网络(三)
2017/12/20 Python
Django中的CBV和FBV示例介绍
2018/02/25 Python
selenium+python截图不成功的解决方法
2019/01/30 Python
Python使用numpy模块实现矩阵和列表的连接操作方法
2019/06/26 Python
python3+django2开发一个简单的人员管理系统过程详解
2019/07/23 Python
python实现递归查找某个路径下所有文件中的中文字符
2019/08/31 Python
python中翻译功能translate模块实现方法
2020/12/17 Python
推荐一些比较有用的css3新属性
2014/11/11 HTML / CSS
工作散漫检讨书
2014/09/16 职场文书
2014年招商工作总结
2014/11/22 职场文书
2015年会计个人工作总结
2015/04/02 职场文书
类和原型的设计模式之复制与委托差异
2022/07/07 Javascript