Object.keys() 和 Object.getOwnPropertyNames() 的区别详解
大部分情况下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()内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
推荐阅读
-
PHP中empty和isset对于参数结构的判断及empty()和isset()的区别,emptyisset
-
python isoweekday和weekday的区别
-
实例详解简单实体类和xml文件的相互转换方法
-
PHP的Yii框架中创建视图和渲染视图的方法详解,yii框架_PHP教程
-
for,foreach,iterator的用法和区别
-
OpenCV-Python图像的减法运算cv2.subtract函数详解以及和矩阵减法的差异对比
-
python新式类和经典类的区别?
-
JavaScript和Java的区别有哪些?
-
springmvc中 / 和 /* 的区别
-
ubuntu 16.04 安装 python2.7 以及 cv2, dist-package 和 site-package 的区别, import cv2 出问题解答