Object.keys() 和 Object.getOwnPropertyNames() 有何本质区别?

2026-04-03 10:351阅读0评论SEO问题
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计468个文字,预计阅读时间需要2分钟。

Object.keys() 和 Object.getOwnPropertyNames() 有何本质区别?

大部分情况下,`Object.getOwnPropertyNames(obj)` 和 `Object.keys(obj)` 的功能相似,都是用来获取一个对象中所有的自身属性名。通常,我们使用它们来获取一个 JSON 对象中所有的属性,例如:

javascriptconst obj={property1: 1, property2: 2};console.log(Object.keys(obj));console

大部分情况下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"]

参考资料:
developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/keys
developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertyNames

到此这篇关于Object.keys() 和 Object.getOwnPropertyNames() 的区别详解的文章就介绍到这了,更多相关Object.keys()和Object.getOwnPropertyNames()内容请搜索易盾网络以前的文章或继续浏览下面的相关文章希望大家以后多多支持易盾网络!

Object.keys() 和 Object.getOwnPropertyNames() 有何本质区别?

本文共计468个文字,预计阅读时间需要2分钟。

Object.keys() 和 Object.getOwnPropertyNames() 有何本质区别?

大部分情况下,`Object.getOwnPropertyNames(obj)` 和 `Object.keys(obj)` 的功能相似,都是用来获取一个对象中所有的自身属性名。通常,我们使用它们来获取一个 JSON 对象中所有的属性,例如:

javascriptconst obj={property1: 1, property2: 2};console.log(Object.keys(obj));console

大部分情况下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"]

参考资料:
developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/keys
developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertyNames

到此这篇关于Object.keys() 和 Object.getOwnPropertyNames() 的区别详解的文章就介绍到这了,更多相关Object.keys()和Object.getOwnPropertyNames()内容请搜索易盾网络以前的文章或继续浏览下面的相关文章希望大家以后多多支持易盾网络!

Object.keys() 和 Object.getOwnPropertyNames() 有何本质区别?