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 相关文章推荐
OfflineSave离线保存代码再次发布使用说明
May 23 Javascript
有关于eclipse配置spket需要注意的一些地方
Apr 07 Javascript
文本域光标操作的jQuery扩展分享
Mar 10 Javascript
javascript的动态加载、缓存、更新以及复用(一)
Jun 09 Javascript
js中substring和substr两者区别和使用方法
Nov 09 Javascript
AngularJS 中的指令实践开发指南(一)
Mar 20 Javascript
Bootstrap按钮功能之查询按钮和重置按钮
Oct 26 Javascript
javascript中闭包概念与用法深入理解
Dec 15 Javascript
JavaScript实现按键精灵的原理分析
Feb 21 Javascript
javascript编写简易计算器
May 06 Javascript
vue自定义全局组件(自定义插件)的用法
Jan 30 Javascript
微信小程序 云开发模糊查询实现解析
Sep 02 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
2014最热门的24个php类库汇总
2014/12/18 PHP
老生常谈php中传统验证与thinkphp框架(必看篇)
2017/06/10 PHP
PHP7匿名类的用法示例
2019/04/05 PHP
增强的 JavaScript 的 trim 函数的代码
2007/08/13 Javascript
JQuery 学习笔记 选择器之五
2009/07/23 Javascript
为javascript添加String.Format方法
2020/08/11 Javascript
JavaScript修改css样式style动态改变元素样式
2013/12/16 Javascript
JS实现文档加载完成后执行代码
2015/07/09 Javascript
innerHTML中标签可以换行的方法汇总
2015/08/14 Javascript
Nodejs express框架一个工程中同时使用ejs模版和jade模版
2015/12/28 NodeJs
Node.js的基本知识简单汇总
2016/09/19 Javascript
详解js中Json的语法与格式
2016/11/22 Javascript
利用JS实现页面删除并重新排序功能
2016/12/09 Javascript
微信小程序 setData使用方法及常用错误解决办法
2017/05/11 Javascript
Vue实现todolist删除功能
2018/06/26 Javascript
Vue在页面数据渲染完成之后的调用方法
2018/09/11 Javascript
在Vue中获取组件声明时的name属性方法
2018/09/12 Javascript
关于layui 实现点击按钮添加一行(方法渲染创建的table)
2019/09/29 Javascript
jQuery实现验证用户登录
2019/12/10 jQuery
5个你不知道的JavaScript字符串处理库(小结)
2020/06/01 Javascript
vue 弹出遮罩层样式实例
2020/07/22 Javascript
js实现弹幕飞机效果
2020/08/27 Javascript
[01:09:40]Newbee vs Pain 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
python 字符串split的用法分享
2013/03/23 Python
Python 列表(List)操作方法详解
2014/03/11 Python
python中MySQLdb模块用法实例
2014/11/10 Python
Django自定义manage命令实例代码
2018/02/11 Python
opencv调整图像亮度对比度的示例代码
2019/09/27 Python
基于Python3.6中的OpenCV实现图片色彩空间的转换
2020/02/03 Python
AmazeUI 缩略图的实现示例
2020/08/18 HTML / CSS
日语系毕业生推荐信
2013/11/11 职场文书
创业资金计划书
2014/02/06 职场文书
大学生军训自我鉴定范文
2014/09/18 职场文书
先进党支部事迹材料
2014/12/24 职场文书
MySQL数据库事务的四大特性
2022/04/20 MySQL
Win11 Beta 预览版 22621.575 和 22622.575更新补丁KB5016694发布(附更新内容大全)
2022/08/14 数码科技