在JavaScript中,对象是核心概念,它们是“无序属性的集合”,这些属性可以包含基本类型、对象或函数。创建对象通常有两种方式:通过Object构造函数实例化或使用对象字面量语法。对象字面量法更为推荐,因为它更简洁明了。 在JavaScript中,属性分为两种类型:数据属性和访问器属性。数据属性用于存储数据,而访问器属性则提供了获取(get)和设置(set)数据值的方法,但本身并不直接存储数据。 **数据属性的四个特性**: 1. **[[Configurable]]**:默认为true,表示能否通过`delete`操作删除属性,能否修改属性的描述符,以及能否将数据属性转换为访问器属性。 2. **[[Enumerable]]**:默认为true,表示是否可以通过`for...in`循环遍历到该属性。 3. **[[Writable]]**:默认为true,表示能否改变属性的值。 4. **[[Value]]**:默认为undefined,表示属性所存储的值。读取和写入属性时,都是基于这个值。 例如,使用`Object.defineProperty()`可以修改属性的默认特性。下面的示例将`person`对象的`name`属性设置为只读: ```javascript var person = { name: "Scott" }; Object.defineProperty(person, "name", { writable: false }); console.log(person.name); // "Scott" person.name = "Evan"; console.log(person.name); // "Scott" ``` 一旦将`configurable`设置为`false`,就无法再删除属性,也无法将其恢复为可配置状态。尝试更改其他特性(如`writable`)可能会导致错误。 **访问器属性**: 访问器属性不直接存储值,而是包含getter和setter函数。读取访问器属性时,会执行getter函数,并返回其返回值。写入访问器属性时,会调用setter函数,传递新值。 ```javascript var person = { _name: "Scott", get name() { return this._name; }, set name(newName) { this._name = newName; } }; console.log(person.name); // "Scott" person.name = "Evan"; console.log(person.name); // "Evan" ``` 访问器属性不具有`[[Value]]`和`[[Writable]]`特性,但具有`[[Configurable]]`和`[[Enumerable]]`特性。创建访问器属性时,可以使用`Object.defineProperty()`,但需要提供`get`和`set`函数。 总结,JavaScript的对象模型提供了丰富的属性定义方式,数据属性和访问器属性分别适用于不同的场景。数据属性用于存储数据,访问器属性用于控制数据的访问。理解这些概念有助于编写更灵活和可控的JavaScript代码。































- 粉丝: 3
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 基于物联网技术的垃圾桶智能管理系统设计与实现.doc
- 全国自考C加加程序设计试题.doc
- 计算机教育中计算机科学技术的运用探讨.docx
- (源码)基于Arduino的ITS150遥控器模拟器.zip
- 电子商务教研计划.doc
- 江西省中小学安全知识网络答题活动答案解析.doc
- Web前端技术课程实训分析报告.doc
- 电子商务网站盈利能力的理性分析.doc
- 移动互联网环境下混合式教学设计与实践.docx
- 教育系统安全大检查市级督查巡查工作记录单.docx
- 计算机网络安全技术实验四.doc
- AVR单片机的通信系统设计方案.doc
- 略谈工程项目管理中材料成本控制的难点及对策.docx
- 个人网络信息安全防范.doc
- 基于大数据时代下档案管理工作存在的问题与对策研究.docx
- (源码)基于Arduino的MPU9250陀螺仪运动处理单元俯仰角控制项目.zip


