JS对象中的属性类型、属性定义和属性读取

本文详细介绍了JavaScript中的对象属性,包括数据属性和访问器属性。数据属性包含数据值,拥有Configurable、Enumerable、Writable和Value四个特性。访问器属性则包含getter和setter函数,用于读取和设置值。使用Object.defineProperty()和Object.defineProperties()可以定义和修改这些属性。同时,Object.getOwnPropertyDescriptor()用于获取属性的描述符。
摘要由CSDN通过智能技术生成

理解对象

ES5中的对象是指无序的属性的集合。(属性可以是基本值、对象和函数)。

对象的属性类型有两种,一种是数据属性,是数据值的保存位置;另一种是访问器属性,包含getter和setter函数。

1.1 数据属性

数据属性包含一个数据值的位置,在这个位置可以读取和写入值。数据属性有四个描述其特征的特性。(这些特性是为javascript内部引擎服务的,不能直接访问,所以将它们放在方括号中。)

  1. [[Configurable]]:表示能否通过 delete 删除属性从而重新定义属性,能否修改属性的特性,或者能否把属性修改为访问器属性。默认值为true。
  2. [[Enumerable]]: 能否通过for-in循环返回属性。默认值为true。
  3. [[Writable]]:能否修改属性的值,默认值为true。
  4. [[Value]]: 属性的数据值,默认为undefined。

!!!此处说的默认值是指直接定义时的默认值,与使用defineProperty()定义的属性默认值不同

数据属性可以直接使用对象字面量或new Object对象来定义,而这些特性值不能直接访问,要修改默认的特性,要使用定义在Object对象中的defineProperty()函数

!!!在调用 Object.defineProperty()方法时,如果不指定configurable、enumerable 和writable 特性的默认值都是 false。

示例如下:

// 使用对象字面量创建一个对象
var person = {
   };

//修改该对象属性的默认特性
/*
	第一个参数为属性所在的对象。
	第二个参数为要定义的属性名。
	第三个参数是其特性描述符的对象。(属性为configurable, enumerable, writable, value)
*/
Object.defineProperty(person, "name", {
    
 writable: false, 
 value: "Nicholas" 
});

//这样就可以访问定义好的数据属性了
alert(person.name); //"Nicholas" 

//在定义属性时将writable设定为false,所有对name属性的值更改操作无效。(严格模式下会报错)
person
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值