当前位置: 移动技术网 > IT编程>开发语言>JavaScript > Object.keys() 和 Object.getOwnPropertyNames() 的区别详解

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

2020年06月14日  | 移动技术网IT编程  | 我要评论

宁夏回族自治区地图,无情的情书吉他谱,杰威瑞

大部分情况下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()内容请搜索移动技术网以前的文章或继续浏览下面的相关文章希望大家以后多多支持移动技术网!

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网