定义

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区别相关推荐

  1. javascript中call和apply的区别

    我理解javascript中call和apply的区别仅在于语法不同. 下例中分别调用call和apply对myObj进行修改,语法不同,但使用效果是一样的: var myObj = { " ...

  2. JavaScript 中 Property 和 Attribute 的区别

    转自:http://www.cnblogs.com/elcarim5efil/p/4698980.html property 和 attribute非常容易混淆,两个单词的中文翻译也都非常相近(pro ...

  3. javascript中children和childNodes的区别

    javascript中children和childNodes的区别 1.childNodes:它是标准属性,它返回指定元素的子元素集合,包括HTML节点,所有属性,文本节点. 可以通过nodeType ...

  4. JavaScript中eval()和$.parseJSON()的区别和联系以及JSON.stringify()的区别

    JavaScript中eval()和$.parseJSON()的区别和联系以及JSON.stringify()的区别 一.第一个区别是:安全性 json格式非常受欢迎,而解析json的方式通常用JSO ...

  5. javascript中call和apply的区别和用法

    javascript中call和apply的区别和用法 1.call和apply是什么 更改对象的内部指针指向,即改变对象的this指向的内容 function Fn(){this.name='小明' ...

  6. JavaScript中Object.getOwnPropertyNames()与Object.keys(obj)的区别

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

  7. JavaScript中对象(Object)的方法

    JavaScript中对象方法总结: 资料来源:网道-互联网开发文档 [https://wangdoc.com/] 1.Object.getPrototypeOf(Object) Object.get ...

  8. javascript 无法修改 数组中对象_谈谈JavaScript中对象建立(Object)

    在这篇文章中我将会着重说明如何创建JavaScript里的对象(Object). 对象(Object)是什么? 在开始介绍如何创建对象前,我们要知道对象是什么.对象(Object)简单地来说,就是一堆 ...

  9. javascript中基本类型和引用类型的区别分析

    大多数人系统学习过的程序设计语言,在这些语言的学习过程中最早学到的几个要点之一就是值类型和引用类型的区别.下面我们来看一下在 JavaScript 中基本数据类型(Primitive Types)和引 ...

  10. 【前端】Object.keys()的使用方法及数组遍历,Object.keys(object).forEach(e => {您的代码})

    本文目录 Object.keys()的使用方法及数组遍历 方法一:forEach() 方法二:for()方法 Object.keys()的使用方法及数组遍历 Object.keys()用于获得由对象属 ...

最新文章

  1. 到底选择PostgreSOL还是MySQL?看这里!
  2. pic单片机ccp脉冲捕捉c语言程序,pic单片机CCP脉冲(PWM)输出
  3. pthread_join
  4. Connections between cities
  5. win10任务栏库进去计算机,win10电脑始终显示任务栏怎么处理
  6. PHP使用CURL抓取页面
  7. 【Spring】Spring Boot 和 Redis 自定义 RedisTemplate
  8. centOS7.6安装MySQL8
  9. axios.post请求出错:Request header field content-type is not allowed by Access-Control-Allow-Headers in……
  10. jQuery超酷轻量级响应式lightbox插件
  11. 软件测试——selenium环境搭建及自动化测试
  12. 域名解析中TTL是什么意思?
  13. 5V 输入升压型两节锂电池充电管理芯片 -LY4080
  14. 2006-2010年美国纽约市空气中一氧化碳污染情况分析
  15. 3DMax_界面介绍及基本工具使用
  16. AspectJ的使用方法
  17. skywalking全链路追踪
  18. 服务器数据库的简单维护,服务器数据库的简单维护
  19. Github 开源:使用 .NET WinForm 开发所见即所得的 IDE 开发环境(Sheng.Winform.IDE)【2.源代码简要说明】
  20. Windows10家庭版 SMB共享文件 方法

热门文章

  1. 浏览器拦截跨域请求处理方法(已阻止跨源请求:同源策略禁止读取远程资源)
  2. 如何快速把音乐转成MP3格式
  3. linux下ftp配置文件详解
  4. 3、MySQL的数据类型介绍
  5. 使用valueOf前必须进行校验
  6. spring boot 1.4默认使用 hibernate validator
  7. 转:Delphi2010新发现-类的构造和析构函数功能
  8. bat 批处理 常用命令和乱码问题
  9. 深入研究java.lang.Runtime类【转】
  10. 书店POS机--细化迭代2--测试