JavaScript中的数据属性和访问器属性
在学习JavaScript原型(prototype)和原型链(prototype chain)知识的时候,发现数据属性和访问器属性的重要性,通过不断的查找相关知识,浅显理解如下,若有差错,希望不吝赐教:
一、数据属性
1.什么是数据属性
默认的对象的属性就是数据属性,一般用于数据存储,有四个特性描述它的行为:
①属性值 [value]:用来保存这个属性的数据值,默认值是undefined;
②可写性 [writable]:表示是否能修改这个属性的值,默认值是true;
③可枚举性 [enumberable]:表示是否能通过for-in循环遍历返回,默认是true;
④可配置性 [configurable]:表示是否能通过delete删除属性从而重新定义属性,是否能修改属性特性,
是否能把数据属性修改为访问器属性。默认值是true;
通过Object.getOwnPropertyDescriptor()可以查询person中name的特性

通过Object.defineProperty()可以修改其特性

修改了person中name属性的writable为false之后,person中的name变为不可修改
2.什么是访问器属性
对应get/set操作,可用于在监听属性的存储过程中限制一些属性的行为
访问器属性也有四个特性描述:
①读取属性函数[get] : 在读取属性时调用的函数
②写入属性函数[set] :在写入函数时调用的函数
③可枚举性 [enumberable]:表示是否能通过for-in循环遍历返回,默认是false;
④可配置性 [configurable]:表示是否能通过delete删除属性从而重新定义属性,是否能修改属性特性,
是否能把访问器属性修改为数据属性。默认值是false;
访问器属性不能直接定义,必须使用Object.defineProperty()定义

访问器属性可以通过Object.getOwnPropertyDescriptor()查询

Object.defineProperty()定义了访问器属性(age),当age属性修改时,name属性和_age属性会相应修改。
由此可以想到数据的双向绑定
小结
在一个对象(person)中设置一个私有属性(_age:开头下划线代表私有属性----龟腚),再为这个对象设置
访问器属性age(本身还未在对象中定义),当person.age进行修改时触发set函数,通过这个函数可以进行数据的操作,
比如数据的判断赋值等一系列操作,从而实现数据的双向绑定。
JavaScript中的数据属性和访问器属性的更多相关文章
- Js中的数据属性和访问器属性
Js中的数据属性和访问器属性 在javaScript中,对象的属性分为两种类型:数据属性和访问器属性. 一.数据属性 1.数据属性:它包含的是一个数据值的位置,在这可以对数据值进行读写. 2.数据属性 ...
- ECMAScript 5中的数据属性和访问器属性
简介 ECMAScript 定义的对象中有两种特殊的属性, 这两种特殊的属性在你定义对象属性时就会赋予, 我们在必要时可以改写这两种特殊的属性让其属性的访问更加的合理化, 这两种特殊的属性称呼及作用如 ...
- JavaScript 数据属性和访问器属性
在JavaScript中对象被定义为"无序属性的集合,其属性可以包含基本值.对象或函数."通俗点讲,我们可以把对象理解为一组一组的名值对,其中值可以是数据或函数. 创建自定义对象通 ...
- JavaScript 属性类型(数据属性和访问器属性)
数据属性 数据属性包含一个数据值的位置.在这个位置可以读取和写入值.数据属性有 4 个描述其行为的特性. [[Configurable]]:表示能否通过 delete 删除属性从而重新定义属性,能否修 ...
- javascript对象属性——数据属性和访问器属性
ECMA-262第五版在定义时,描述了属性property的各种特征,定义这些特性是为了实现javascript引擎用的,为了表示该特性是内部值,规范把它们放在了两对儿方括号中,例如[[Enumera ...
- js中属性类型:数据属性与访问器属性
js中属性类型分为两种:数据属性和访问器属性 在js中,对象都是由名值对构成的,名:就是我们所说的属性名,值就是属性对应的值(基本值.对象.方法). ECMA-262第5版定义了只有内部才用的特性,描 ...
- JavaScript数据属性与访问器属性
ES5中对象的属性可以分为‘数据属性’和‘访问器属性’两种. 数据属性一般用于存储数据数值,访问器属性对应的是set/get操作,不能直接存储数据值. 数据属性特性:value.writable.en ...
- 浅谈Javascript数据属性与访问器属性
ES5中对象的属性可以分为‘数据属性’和‘访问器属性’两种. 数据属性一般用于存储数据数值,访问器属性对应的是set/get操作,不能直接存储数据值. 数据属性特性:value.writable.en ...
- JS的数据属性和访问器属性
ECMA-262第5版在定义只有内部才用的特性(attribute)时,描述了属性(property)的各种特征.ECMA-262定义这些特性是为了实现javascript引擎用的,因此在javasc ...
随机推荐
- bootstrap-table 的必备参数
1: 链接接口 url 请求的数据类型:dataType : "json" 后台请求方法 method locale: 'zh-CN',//中文支持 pagination: ...
- python学习笔记之——python函数
1.定义一个函数 你可以定义一个自己想要功能的函数,以下是简单的规则: 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号(). 任何传入参数和自变量必须放在圆括号中间.圆括号之间可以用于定 ...
- Vue 框架-05-动态绑定 css 样式
Vue 框架-05-动态绑定 css 样式 今天的小实例是关于 Vue 框架动态绑定 css 样式,这也是非常常用的一个部分 首先说一下 动态绑定,相对的大家都知道静态绑定,静态绑定的话,直接加 cl ...
- MySQL无法启动、服务没有报告任何错误&初次登陆错误的解决
先以管理员身份运行cmd(右键单击左下角win菜单) 输入mysqld -install,net start mysql,下图是返回结果.报错情况以及修正之后的全过程 启动失败之后输入mysqld - ...
- [WSUS] Windows Server Update Service 更新后,出现错误不能连接
执行以下命令:C:\Program Files\Update Services\Tools\wsusutil postinstall /servicing 参考:http://www.urtech.c ...
- Jmeter入门--断言(检查点)
断言是在请求的返回层面增加一层判断机制.因为请求成功,并不代表结果一定正确,因为此需要检查机制提高测试准确性. 1.响应断言 模式匹配规则: 包括:返回结果包括你指定的内容,支持正则匹配 例如: 响应 ...
- oracle使用索引和不使用索引性能分析
首先准备一张百万条数据的表,这样分析数据差距更形象! 下面用分页表数据对表进行分析,根据EMP_ID 字段排序,使用索引和不使用索引性能差距! sql查询语法准备,具体业务根据具体表书写sql语法: ...
- Jquery Ajax向服务端传递数组参数值
在使用MVC时,向服务器端发送POST请求时有时需要传递数组作为参数值 下面使用例子说明,首先看一下Action [HttpPost] public ActionResult Test(List< ...
- 执行SQL的DbHelperSQL
using System; using System.Collections; using System.Collections.Specialized; using System.Data; usi ...
- 转:线程Thread (1)
引言 1.理解多线程 2. 线程异步与线程同步 3.创建多线程应用程序 3.1通过System.Threading命名空间的类构建 3.1.1异步调用线程 3.1.2并发问题 3.1.3线程同步 3. ...