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中的数据属性和访问器属性相关推荐

  1. 数据属性和访问器属性

    <!DOCTYPE html><html><head> <meta charset="utf-8"> <title>数据 ...

  2. 深入理解对象的数据属性与访问器属性及属性间相互转换

    ECMA-262 第 5 版在定义只有内部才用的特性(attribute)时,描述了属性(property)的各种特征.ECMAScript 中有两种属性:数据属性和访问器属性. 1. 数据属性 数据 ...

  3. 《js高级程序设计》6.1.1-6.1.3——数据属性、访问器属性

    数据属性:该属性包含了一个数据值的位置,它包含了4个描述行为的特性: 1. [[Configurable]]:表示是否能通过delete删除属性从而重新定义属性,能否修改属性的特性,能否把属性修改为访 ...

  4. ECMAScript数据属性和访问器属性

    ECMA-262 第 5 版在定义只有内部才用的特性(attribute)时,描述了属性(property)的各种特征. ECMA-262 定义这些特性是为了实现 JavaScript 引擎用的,因此 ...

  5. JavaScript | 数据属性与访问器属性

    属性类型 数据属性 - 包含一个数据值的位置,可以读取和写入值 [writable] 是否能修改属性的值 true [enumerable] 是否通过for in 循环返回属性(是否可以被枚举) tr ...

  6. JS-数据属性与访问器属性

    数据属性与访问器属性 1.对象属性的作用主要是数据的存储 2.既然数据存在存储,则会有增删改查相关操作(增加属性,修改属性值,获取属性值,删除属性) 3.数据属性用于控制属性的增删改查特征 4.访问属 ...

  7. js中如果无法获取某个html属性,例如自定义了一个dir属性,但获取总是为空,尝试换个词,因为可能什么关键词冲突了。...

    js中如果无法获取某个html属性,例如自定义了一个dir属性,但获取总是为空,尝试换个词,因为可能什么关键词冲突了. 转载于:https://www.cnblogs.com/kenkofox/arc ...

  8. C#中get和set访问器的用法

    C#中的get和set访问器可用来获取和设置类中字段(即属性)的值,通过get和set访问器提供访问接口,从而可以避免对字段的直接访问造成的不安全性. using System; using Syst ...

  9. js中常用的对象—String的属性和方法

    今天说一下,js中常用的内置对象--String对象 它有以下几个常用的属性: length prototype 有以下几个常用的方法: parseInt()转换为数字 parseFloat()转换为 ...

最新文章

  1. token验证_Swagger中添加Token验证
  2. (*长期更新)软考网络工程师学习笔记——Section 14 Linux服务器配置
  3. 常用来进行钢结构节点输出的软件是什么_高效办公神器!350个计算表格+30个小软件,工程算量不犯难...
  4. android 设置网络超时时间设置,Android:AndroidHttpClient-如何设置超时时间?
  5. asp mysql insert_用asp把表单数据插入数据库的2种常用方法
  6. matchers依赖_定制Hamcrest Matchers
  7. 关于微信小程序下拉出现三个小点
  8. Can't load AMD 64-bit .dll on a IA 32-bit platform
  9. python几种排序_Python实现几种排序算法
  10. matlab怎么设clim,Python Matplotlib.pyplot.clim()用法及代码示例
  11. 深度神经网络面临的挑战与解决方案
  12. Echarts关系图(使用重力图)
  13. python程序实例视频教程_python从入门到精通视频(全60集)马哥Python未压缩版
  14. atmega128 单片机 智能 台灯 控制器 PWM ADC 时间 光敏电阻 proteus 仿真
  15. IT30: 数字化转型之路
  16. beyond compare怎么设置不比较文件修改时间?
  17. Python教程:输入一系列整数输出最大值
  18. 加速下载ardupilot工程
  19. FOC矢量控制及BLDC控制中的端电压、相电压、线电压等概念别还傻傻分不清楚
  20. crawlergo带cookie爬虫

热门文章

  1. java构造方法基础_Java 基础:构造方法
  2. jpa hibernate mysql_008Spring JPA Hibernate MySQL
  3. git怎么上传文件到别人的仓库_Git将本地代码上传至远程仓库
  4. c++:结构体的应用
  5. SQL server 中SQL语句实战操作
  6. 【杂谈】如何使用有三AI生态学习计算机视觉和自然语言处理等内容
  7. 【完结】AI1000问以后知识星球和B站见啦
  8. 全球及中国页岩气市场供需前景与投资盈利分析报告2021版
  9. 中国活性炭行业市场全景调研分析及需求趋势预测报告2022-2028年
  10. Android Studio主要目录及文件简介