当前位置: 首页 > news >正文

在JavaScript中,查看对象有哪些属性

在JavaScript中,有几种方法可以查看对象有哪些属性。以下是一些常用的方法:

  1. Object.keys(): 返回一个由给定对象自身的可枚举属性组成的数组。

  2. Object.getOwnPropertyNames(): 返回一个由指定对象的所有自身属性的属性名(包括不可枚举属性,但不包括Symbol属性)组成的数组。

  3. for...in循环: 遍历对象自身的和继承的可枚举属性(通常我们会用hasOwnProperty来过滤继承的属性)。

  4. Object.getOwnPropertySymbols(): 返回一个给定对象自身的所有Symbol属性的数组。

  5. Reflect.ownKeys(): 返回一个由目标对象自身的属性键组成的数组,包括不可枚举属性和Symbol属性。

下面我们通过示例来详细说明:

  1. 使用Object.keys()
const obj = { a: 1, b: 2, c: 3 };
console.log(Object.keys(obj)); // ['a', 'b', 'c']
  1. 使用Object.getOwnPropertyNames()
const obj = { a: 1, b: 2, c: 3 };
// 添加一个不可枚举属性
Object.defineProperty(obj, 'd', {value: 4,enumerable: false
});
console.log(Object.getOwnPropertyNames(obj)); // ['a', 'b', 'c', 'd']
  1. 使用for…in循环
const obj = { a: 1, b: 2, c: 3 };
for (let key in obj) {if (obj.hasOwnProperty(key)) {console.log(key); // 依次输出 'a', 'b', 'c'}
}
  1. 使用Object.getOwnPropertySymbols()
const obj = { a: 1, b: 2, c: 3 };
const sym = Symbol('symbolKey');
obj[sym] = 'symbolValue';
console.log(Object.getOwnPropertySymbols(obj)); // [Symbol(symbolKey)]
  1. 使用Reflect.ownKeys()
const obj = { a: 1, b: 2, c: 3 };
const sym = Symbol('symbolKey');
obj[sym] = 'symbolValue';
Object.defineProperty(obj, 'd', {value: 4,enumerable: false
});
console.log(Reflect.ownKeys(obj)); // ['a', 'b', 'c', 'd', Symbol(symbolKey)]

注意事项

  • 上述方法中,Object.keys()for...in(配合hasOwnProperty)只遍历可枚举属性,而Object.getOwnPropertyNames()Reflect.ownKeys()会包括不可枚举属性。

  • for...in循环还会遍历原型链上的可枚举属性,因此通常使用hasOwnProperty来检查属性是否为对象自身的属性。

  • 如果你需要获取Symbol属性,可以使用Object.getOwnPropertySymbols()Reflect.ownKeys()

根据你的具体需求选择合适的方法。

http://www.dtcms.com/a/525188.html

相关文章:

  • openEuler配置docker
  • 42.渗透-Kali Linux-工具-Ettercap(arp广播欺骗,局域网流量拦截)
  • 仓颉语言第一课:从 HelloWorld 到鸿蒙原生 HTTP 服务
  • 拟定一个农产品电商网站的建设需求wordpress vs
  • 网站开发销售wordpress中文版去广告
  • 诡异的Mysql连接中断导致的事务‘失联‘
  • STM32项目分享:校园绿色照明智能控制系统
  • 共享经济型网站开发湖北省节能建设网站
  • 免费在线网站建设敦化建设局网站
  • oracle数据泵数据库自动备份脚本
  • 数据库运维查询SQL语句集合
  • 家具在线设计网站网上最好购物网站
  • 青岛房地产团购网站建设佛山网站建设网站建设收费
  • Pytest+requests进行接口自动化测试9.0(redis + excal文件的使用)
  • Python+Selenium+Pytest+POM自动化测试框架封装详解
  • 大模型-模型压缩:量化、剪枝、蒸馏、二值化 (1)
  • 高中男女做那个视频网站挂机软件定制
  • 怎么查看一个网站的浏览量自豪地采用wordpress
  • 微网站建设哪里便宜wordpress仿wiki
  • 计算机网络设计:从基础到原则的体系化指南
  • 在安阳想建个网站怎么做经典的网站设计工具
  • 生物油分离及分离产物结构性质与表征
  • Android开发教程之Java入口方法介绍 Java打印 Java注释 Java变量 常量申明 变量命名规则
  • 一个新的面向东亚地区的高精度天气模拟的基准算例已开源发布
  • 宁波易通建设网站网站个人备案百度推官
  • P1928 外星密码(dfs)
  • 什么网站是最全的南通哪里做网站
  • 快速排序代码实现详解
  • 社会工程学全解析:从原理到实战
  • 基于LSTM的多变量时间序列预测创新路径