JavaScript对象属性
2024-08-27 10:35:37
JavaScript对象的属性有两类:数据属性和访问器属性
数据属性
数据属性有四个特性,分别为:
- [[value]]属性的值
- [[writeable]]属性是否可以修改
- [[enumerable]]属性是否可枚举
- [[configurable]]属性是否可配置,包括是否可删除,是否可修改属性的特性,是否可修改为访问器属性
通过一般方式默认的特性为undefined,true,true,true。通过defineProperty方式默认的特性为undefined,false,false,false。
注:如果通过defineProperty的操作未明确指定configurable为true,则属性的操作将受到限制(包括不能被修改,不能被删除,不能修改特性,不能修改为访问器属性)
访问器属性
访问器属性有四个特性,分别为:
- [[get]]属性的值
- [[set]]属性是否可以修改
- [[enumerable]]属性是否可枚举
- [[configurable]]属性是否可配置,包括是否可删除,是否可修改属性的特性,是否可修改为数据属性
通过一般方式默认的特性为undefined,undefined,true,true。通过defineProperty方式默认的特性为undefined,undefined,false,false。
注:如果通过defineProperty的操作未明确指定configurable为true,则属性的操作将受到限制(包括不能被修改,不能被删除,不能修改特性,不能修改为数据属性)
定义属性:
Object.defineProperty(对象,属性名称,属性描述符)
获取属性特性(属性描述符)
Object.getOwnProperyDescriptor(对象,属性名称)
自身属性
通过getOwnPropertyNames可以获取自身属性包括可枚举和不可枚举
for..in或者Object.keys可以获取自身以及原型链上的可枚举属性,然后通过hasOwnProperty可以获取自身的可枚举属性
参考:
- JavaScript高级程序设计6.1理解对象
- nodejs包merge-descriptors
个人博客地址 :http://blog.yangqiong.com.cn/dui-xiang-shu-xing/
最新文章
- 记一次MYSQL更新优化
- libevent源码分析:eventop
- 第一章 删掉centos原有的openjdk并安装sun jdk
- 自己开发的csdn手机客户端
- ucenter实现原理
- Android -- TabHost、Fragment、状态保存、通信
- linux c下mysql编程样例
- 【BZOJ】【2940】【POI2000】条纹
- Uncaught TypeError: Cannot set property 'innerHTML' of null
- hibernate 配置文件 和一个 id生成类BaseEntity.java 和一个hibernate工具类 HibernatUtils.java
- hadoop深入研究:(七)——压缩
- 【iOS】UIViewController生命周期
- codeforces 236A . Boy or Girl(串水问题)
- AJAX在Struts2中使用
- HDU 2412 Party at Hali-Bula
- Webpack单元测试,e2e测试
- 【转】JDBC学习笔记(10)——调用函数&;存储过程
- 关于Videodownload helper的下载问题
- JDK 和 OpenJDK 的区别
- [leetcode]Unique Paths II @ Python