Object.keys() 和 Object.getOwnPropertyNames() 的区别
发布日期:2021-05-07 23:08:37 浏览次数:25 分类:精选文章

本文共 875 字,大约阅读时间需要 2 分钟。

Object.keys() 和 Object.getOwnPropertyNames() 的区别

大部分情况下Object.getOwnPropertyNames()与Object.keys(obj)的功能是一样的,我们一般也是用来获取一个对象中所有属性,例如

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 = 18Object.defineProperties(p, {  age:{    enumerable:false  }})console.log(Object.keys(p)) // ["name"]console.log(Object.getOwnPropertyNames(p)) // ["name", "age"]

 

上一篇:删除字符串中的所有相邻重复项
下一篇:手动封装一个Ajax请求

发表评论

最新留言

第一次来,支持一个
[***.219.124.196]2025年04月02日 07时32分30秒