JavaScript中Object.keys、Object.getOwnPropertyNames区别
定义
Object.keys
定义:返回一个对象可枚举属性的字符串数组;
Object.getOwnPropertyNames
定义:返回一个对象可枚举、不可枚举属性的名称;
属性的可枚举性、不可枚举性
定义:可枚举属性是指那些内部 “可枚举” 标志设置为 true 的属性,对于通过直接的赋值和属性初始化的属性,该标识值默认为即为 true,对于通过 Object.defineProperty 等定义的属性,该标识值默认为 false。
例子
var obj = { "prop1": "v1" }; Object.defineProperty(obj, "prop2", { value: "v2", writable: false }); console.log(Object.keys(obj).length); //output:1 console.log(Object.getOwnPropertyNames(obj).length); //output:2 console.log(Object.keys(obj)); //output:Array[1] => [0: "prop1"] console.log(Object.getOwnPropertyNames(obj)); //output:Array[2] => [0: "prop1", 1: "prop2"]
内置的判断,访问和迭代方法
功能 | 可枚举 | 可枚举、不可枚举 |
判断 |
propertyIsEnumerable
|
in/hasOwnProperty |
访问 | Object.keys | Object.getOwnPropertyNames |
迭代 | for..in.. | Object.getOwnPropertyNames |
实战
var obj = { "prop1": "v1" }; Object.defineProperty(obj, "prop2", { value: "v2", writable: true }); console.log(obj.hasOwnProperty("prop1")); //output: true console.log(obj.hasOwnProperty("prop2")); //output: true console.log(obj.propertyIsEnumerable("prop1")); //output: true console.log(obj.propertyIsEnumerable("prop2")); //output: false console.log('prop1' in obj); //output: true console.log('prop2' in obj); //output: true for (var item in obj) { console.log(item); } //output:prop1 for (var item in Object.getOwnPropertyNames(obj)) { console.log(Object.getOwnPropertyNames(obj)[item]); } //ouput:[prop1,prop2]
相关链接
Object.hasOwnProperty()
Object.propertyIsEnumerable()
Object.getOwnPropertyNames()
Object.keys()
属性的可枚举性和所有权
JavaScript中Object.keys、Object.getOwnPropertyNames区别相关推荐
- javascript中call和apply的区别
我理解javascript中call和apply的区别仅在于语法不同. 下例中分别调用call和apply对myObj进行修改,语法不同,但使用效果是一样的: var myObj = { " ...
- JavaScript 中 Property 和 Attribute 的区别
转自:http://www.cnblogs.com/elcarim5efil/p/4698980.html property 和 attribute非常容易混淆,两个单词的中文翻译也都非常相近(pro ...
- javascript中children和childNodes的区别
javascript中children和childNodes的区别 1.childNodes:它是标准属性,它返回指定元素的子元素集合,包括HTML节点,所有属性,文本节点. 可以通过nodeType ...
- JavaScript中eval()和$.parseJSON()的区别和联系以及JSON.stringify()的区别
JavaScript中eval()和$.parseJSON()的区别和联系以及JSON.stringify()的区别 一.第一个区别是:安全性 json格式非常受欢迎,而解析json的方式通常用JSO ...
- javascript中call和apply的区别和用法
javascript中call和apply的区别和用法 1.call和apply是什么 更改对象的内部指针指向,即改变对象的this指向的内容 function Fn(){this.name='小明' ...
- JavaScript中Object.getOwnPropertyNames()与Object.keys(obj)的区别
大部分情况下Object.getOwnPropertyNames()与Object.keys(obj)的功能是一样的,我们一般也是用来获取一个JSON对象中所有属性,例如 const obj = {p ...
- JavaScript中对象(Object)的方法
JavaScript中对象方法总结: 资料来源:网道-互联网开发文档 [https://wangdoc.com/] 1.Object.getPrototypeOf(Object) Object.get ...
- javascript 无法修改 数组中对象_谈谈JavaScript中对象建立(Object)
在这篇文章中我将会着重说明如何创建JavaScript里的对象(Object). 对象(Object)是什么? 在开始介绍如何创建对象前,我们要知道对象是什么.对象(Object)简单地来说,就是一堆 ...
- javascript中基本类型和引用类型的区别分析
大多数人系统学习过的程序设计语言,在这些语言的学习过程中最早学到的几个要点之一就是值类型和引用类型的区别.下面我们来看一下在 JavaScript 中基本数据类型(Primitive Types)和引 ...
- 【前端】Object.keys()的使用方法及数组遍历,Object.keys(object).forEach(e => {您的代码})
本文目录 Object.keys()的使用方法及数组遍历 方法一:forEach() 方法二:for()方法 Object.keys()的使用方法及数组遍历 Object.keys()用于获得由对象属 ...
最新文章
- 到底选择PostgreSOL还是MySQL?看这里!
- pic单片机ccp脉冲捕捉c语言程序,pic单片机CCP脉冲(PWM)输出
- pthread_join
- Connections between cities
- win10任务栏库进去计算机,win10电脑始终显示任务栏怎么处理
- PHP使用CURL抓取页面
- 【Spring】Spring Boot 和 Redis 自定义 RedisTemplate
- centOS7.6安装MySQL8
- axios.post请求出错:Request header field content-type is not allowed by Access-Control-Allow-Headers in……
- jQuery超酷轻量级响应式lightbox插件
- 软件测试——selenium环境搭建及自动化测试
- 域名解析中TTL是什么意思?
- 5V 输入升压型两节锂电池充电管理芯片 -LY4080
- 2006-2010年美国纽约市空气中一氧化碳污染情况分析
- 3DMax_界面介绍及基本工具使用
- AspectJ的使用方法
- skywalking全链路追踪
- 服务器数据库的简单维护,服务器数据库的简单维护
- Github 开源:使用 .NET WinForm 开发所见即所得的 IDE 开发环境(Sheng.Winform.IDE)【2.源代码简要说明】
- Windows10家庭版 SMB共享文件 方法