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,不然这个会导致后面一些报错的问题。

时间: 2024-08-02 06:59:03

Js中的数据属性和访问器属性的相关文章

js高级程序设计——数据属性和访问器属性

ES5中对象的属性可以分为"数据属性"和"访问器属性"两种. 数据属性一般用于存储数据数值,访问器属性对应的是set/get操作,不能直接存储数据值. 数据属性分为 configurable   enumerable writable value 解释:configurable: 表示能否通过delete删除属性重而重新定义属性,能否修改属性的特性,或者能否把属性修改为访问器属性. enumerable:表示能否通过for-in循环返回属性. writable:表示

ECMAScript 5中的数据属性和访问器属性

简介 ECMAScript 定义的对象中有两种特殊的属性, 这两种特殊的属性在你定义对象属性时就会赋予, 我们在必要时可以改写这两种特殊的属性让其属性的访问更加的合理化, 这两种特殊的属性称呼及作用如下: 数据属性: 通过对数据属性的设置, 我们可以让用户操作普通的数据(obj.name)时限制他们可以操作的权限, 可以让其数据变得不可修改.不可在for...in中被其枚举.不可以删除该数据并且不能让其改变原有的部分数据属性([[ Enumerable ]].[[ Configurable ]]

浅谈js对象之数据属性、访问器属性、Object.defineProperty方法

一.对象 这个不用多说,常见的几种创建对象的方法有: 1.通过构造函数创建对象,如下所示: function Person(){ } var person = new Person(); 2.通过Object创建简单对象,例如: var obj = new Object(); 3.通过字面量创建对象. var obj = {}; 常用的一般是第一种和第三种方法. 二.属性类型 javascript中有两种属性:数据属性和访问器属性,确切的说这两种特性是用来描述对象属性的各种特征,比如说这个对象属

JavaScript数据属性与访问器属性

ES5中对象的属性可以分为‘数据属性’和‘访问器属性’两种. 数据属性一般用于存储数据数值,访问器属性对应的是set/get操作,不能直接存储数据值. 数据属性特性:value.writable.enumerable.configurable. 解释:configurable:true/false,是否可以通过delete删除属性,能否修改属性的特性,能否把属性修改为访问器属性,默认false: enumerable:true/false,是否可以通过for in循环返回,默认false: wr

JavaScript笔记--数据属性和访问器属性

在JavaScript中最基本的创建一个对象的方法是new一个Object()的实例,然后再为其添加属性与方法,下例创建一个包含属性name的person对象,name属性的特征值为"xiaochang": var person = new Object(); person.name = "xiaochang"; person.say = function(){ console.log("Hi, my name is " + this.name)

数据属性和访问器属性

<!DOCTYPE html><html><head> <meta charset="utf-8"> <title>数据属性和访问器属性</title> <script src="js/jquery.min.js"></script> <script>模板 var obj ={ get 空格  属性名(){ return 属性值: }, set 空格  属性名

关于对象的数据属性和访问器属性

ECMAScript中有两种属性:数据属性和访问器属性. 数据属性: 数据属性包含一个数据值的位置,在这个位置可以读取和写入值.数据属性有4个描述其行为的特性. 1. [[Configurable]] 2. [[Enumerable]] 3. [[Writable]] 4. [[Value]] 要修改属性默认的特性,必须使用 Object.defineProperty()方法.这个方法接收三个参数,属性所在的对象,属性的名字和一个描述符对象.其中,描述符对象的属性必须是:configurable

ECMAScript数据属性和访问器属性

ECMA-262 第 5 版在定义只有内部才用的特性(attribute)时,描述了属性(property)的各种特征.ECMA-262 定义这些特性是为了实现 JavaScript 引擎用的,因此在 JavaScript 中不能直接访问它们.为了表示特性是内部值,该规范把它们放在了两对儿方括号中,例如 [[Enumerable]] . 1.数据属性:数据属性包含一个数据值的位置,在这个位置可以读取和写入值.数据属性有4个描述其行为的特性 1) configurable:表示能否通过 delet

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

属性类型 数据属性 - 包含一个数据值的位置,可以读取和写入值 [writable] 是否能修改属性的值 true [enumerable] 是否通过for in 循环返回属性(是否可以被枚举) true [configurable] 是否能通过delete删除,能否修改属性的特性,能否修改访问器属性 true [value] 包含这个属性的数据值,读取属性值的时候从这个位置读取. undefined 访问器属性 [enumerable] 是否通过for in 循环返回属性(是否可以被枚举) t