Js中的数据属性和访问器属性
Js中的数据属性和访问器属性
在javaScript中,对象的属性分为两种类型:数据属性和访问器属性。
一、数据属性
1.数据属性:它包含的是一个数据值的位置,在这可以对数据值进行读写。
2.数据属性包含四个特性,分别是:
configurable:表示能否通过delete删除属性从而重新定义属性,能否修改属性的特性,或能否把属性修改为访问器属性,默认为true
enumerable:表示能否通过for-in循环返回属性
writable:表示能否修改属性的值
value:包含该属性的数据值。默认为undefined
如下面这个例子:创建一个对象person,打印出name属性的特性的默认值
执行结果:
对几个特性的测试:
测试结果:
3.修改数据属性的默认特性
修改属性属性的默认特性要用到一个方法:Object.defineProperty()方法,这个方法有三个参数:属性所在的对象,属性名,一个描述符对象。
通过这个方法,我们可以来修改一个属性的这4个特性。
如我们对刚刚上面的penson对象里面的name属性的特性进行修改:
执行结果:
结果中可以看到,person对象的name属性中的四个特性的值都相应改变了。同时后面的报错是对configurable这个特性改为false后的局限的测试。
上面的注释中是分别对各个属性修改后的影响的测试。大家可以自己运行下试试效果。
二、访问器属性
1.访问器属性:这个属性不包含数据值,包含的是一对get和set方法,在读写访问器属性时,就是通过这两个方法来进行操作处理的。
2.访问器属性包含的四个特性:
configurable:表示能否通过delete删除属性从而重新定义属性,能否修改属性的特性,或能否把属性修改为访问器属性,默认为false
enumerable:表示能否通过for-in循环返回属性,默认为false
Get:在读取属性时调用的函数,默认值为undefined
Set:在写入属性时调用的函数,默认值为undefined
这里要注意下,访问器属性不能直接定义,要通过Object.defineProperty()这个方法来定义。
下面来个例子,创建一个访问器对象book,接着打印出其year访问器属性的特性描述并对其方法进行测试打印:
执行结果:
其他两个特性configurable,enumerable的测试方式可以参照数据属性的。不过在这特别说明下,关于configurable这个特性,因为访问器属性里面这个
特性默认值为false,如果程序后面需要对该属性进行delete操作等,那就在定义访问器属性时,将这个特性设置为true,不然这个会导致后面一些报错的问题。
转载于:https://www.cnblogs.com/yanan-boke/p/7771264.html
Js中的数据属性和访问器属性相关推荐
- 数据属性和访问器属性
<!DOCTYPE html><html><head> <meta charset="utf-8"> <title>数据 ...
- 深入理解对象的数据属性与访问器属性及属性间相互转换
ECMA-262 第 5 版在定义只有内部才用的特性(attribute)时,描述了属性(property)的各种特征.ECMAScript 中有两种属性:数据属性和访问器属性. 1. 数据属性 数据 ...
- 《js高级程序设计》6.1.1-6.1.3——数据属性、访问器属性
数据属性:该属性包含了一个数据值的位置,它包含了4个描述行为的特性: 1. [[Configurable]]:表示是否能通过delete删除属性从而重新定义属性,能否修改属性的特性,能否把属性修改为访 ...
- ECMAScript数据属性和访问器属性
ECMA-262 第 5 版在定义只有内部才用的特性(attribute)时,描述了属性(property)的各种特征. ECMA-262 定义这些特性是为了实现 JavaScript 引擎用的,因此 ...
- JavaScript | 数据属性与访问器属性
属性类型 数据属性 - 包含一个数据值的位置,可以读取和写入值 [writable] 是否能修改属性的值 true [enumerable] 是否通过for in 循环返回属性(是否可以被枚举) tr ...
- JS-数据属性与访问器属性
数据属性与访问器属性 1.对象属性的作用主要是数据的存储 2.既然数据存在存储,则会有增删改查相关操作(增加属性,修改属性值,获取属性值,删除属性) 3.数据属性用于控制属性的增删改查特征 4.访问属 ...
- js中如果无法获取某个html属性,例如自定义了一个dir属性,但获取总是为空,尝试换个词,因为可能什么关键词冲突了。...
js中如果无法获取某个html属性,例如自定义了一个dir属性,但获取总是为空,尝试换个词,因为可能什么关键词冲突了. 转载于:https://www.cnblogs.com/kenkofox/arc ...
- C#中get和set访问器的用法
C#中的get和set访问器可用来获取和设置类中字段(即属性)的值,通过get和set访问器提供访问接口,从而可以避免对字段的直接访问造成的不安全性. using System; using Syst ...
- js中常用的对象—String的属性和方法
今天说一下,js中常用的内置对象--String对象 它有以下几个常用的属性: length prototype 有以下几个常用的方法: parseInt()转换为数字 parseFloat()转换为 ...
最新文章
- token验证_Swagger中添加Token验证
- (*长期更新)软考网络工程师学习笔记——Section 14 Linux服务器配置
- 常用来进行钢结构节点输出的软件是什么_高效办公神器!350个计算表格+30个小软件,工程算量不犯难...
- android 设置网络超时时间设置,Android:AndroidHttpClient-如何设置超时时间?
- asp mysql insert_用asp把表单数据插入数据库的2种常用方法
- matchers依赖_定制Hamcrest Matchers
- 关于微信小程序下拉出现三个小点
- Can't load AMD 64-bit .dll on a IA 32-bit platform
- python几种排序_Python实现几种排序算法
- matlab怎么设clim,Python Matplotlib.pyplot.clim()用法及代码示例
- 深度神经网络面临的挑战与解决方案
- Echarts关系图(使用重力图)
- python程序实例视频教程_python从入门到精通视频(全60集)马哥Python未压缩版
- atmega128 单片机 智能 台灯 控制器 PWM ADC 时间 光敏电阻 proteus 仿真
- IT30: 数字化转型之路
- beyond compare怎么设置不比较文件修改时间?
- Python教程:输入一系列整数输出最大值
- 加速下载ardupilot工程
- FOC矢量控制及BLDC控制中的端电压、相电压、线电压等概念别还傻傻分不清楚
- crawlergo带cookie爬虫
热门文章
- java构造方法基础_Java 基础:构造方法
- jpa hibernate mysql_008Spring JPA Hibernate MySQL
- git怎么上传文件到别人的仓库_Git将本地代码上传至远程仓库
- c++:结构体的应用
- SQL server 中SQL语句实战操作
- 【杂谈】如何使用有三AI生态学习计算机视觉和自然语言处理等内容
- 【完结】AI1000问以后知识星球和B站见啦
- 全球及中国页岩气市场供需前景与投资盈利分析报告2021版
- 中国活性炭行业市场全景调研分析及需求趋势预测报告2022-2028年
- Android Studio主要目录及文件简介