JS对象封装技巧解析:从基础到升级版
34 浏览量
更新于2024-08-29
收藏 120KB PDF 举报
"详解JS对象封装的常用方式"
在JavaScript中,对象封装是实现面向对象编程的关键技术。这里我们将深入探讨两种常见的JS对象封装方法,并理解`new`操作符的工作原理。
### 常规封装
```javascript
function Person(name, age, sex) {
this.name = name;
this.age = age;
this.sex = sex;
}
Person.prototype = {
constructor: Person,
sayHello: function() {
console.log('hello');
}
}
```
常规封装方式直接在构造函数中设置属性和方法。`Person`函数负责创建并初始化对象,同时原型链上定义公共方法。这种方法简洁明了,但当属性或方法较多时,构造函数会变得复杂。
### 升级版封装
```javascript
function Person(info) {
this._init_(info);
}
Person.prototype = {
constructor: Person,
_init_: function(info) {
this.name = info.name;
this.age = info.age;
this.sex = info.sex;
},
sayHello: function() {
console.log('hello');
}
}
```
升级版封装将初始化逻辑分离到`_init_`方法中,使得构造函数职责更单一。这样可以保持构造函数简洁,易于维护。同时,对象属性不再直接在构造函数中声明,而是通过传递的信息对象动态设置。
### `new`操作符的执行原理
`new`操作符实际上是执行以下步骤:
1. 创建一个新的空对象`o`。
2. 设置新对象的原型为构造函数的`prototype`属性,即`o.__proto__ = constructor.prototype`。
3. 执行构造函数,将新对象`o`作为上下文(`this`关键字指向`o`)。这一步会调用`_init_`方法初始化对象属性。
4. 检查构造函数的返回值类型。如果返回的是基本类型(字符串、数字、布尔值、null、undefined),则返回新对象`o`;否则,返回构造函数的返回值。
这种机制确保了即使构造函数有返回值,只要不是基本类型,新创建的对象仍能保留正确的原型链。
### 封装的最佳实践
- **模块化**:将相关的方法和属性组织成模块,通过模块导出和导入来封装和复用代码。
- **构造函数**:用于创建具有相同属性和方法的对象实例,应专注于初始化。
- **原型**:用于添加共享方法,减少内存占用,提高性能。
- **访问器/存取器**:使用`get`和`set`方法控制对对象属性的访问,增加数据安全性。
- **私有属性**:通过闭包或Symbol实现私有属性,防止外部直接访问和修改。
理解并掌握这些封装技巧对于编写高效、可维护的JavaScript代码至关重要。在实际开发中,可以根据项目需求选择合适的封装策略,以实现更好的代码结构和可扩展性。
2020-10-23 上传
2020-11-26 上传
点击了解资源详情
点击了解资源详情
2020-10-22 上传
2020-10-15 上传
2020-10-17 上传
2022-01-22 上传
weixin_38646645
- 粉丝: 4
- 资源: 1001
最新资源
- 前端协作项目:发布猜图游戏功能与待修复事项
- Spring框架REST服务开发实践指南
- ALU课设实现基础与高级运算功能
- 深入了解STK:C++音频信号处理综合工具套件
- 华中科技大学电信学院软件无线电实验资料汇总
- CGSN数据解析与集成验证工具集:Python和Shell脚本
- Java实现的远程视频会议系统开发教程
- Change-OEM: 用Java修改Windows OEM信息与Logo
- cmnd:文本到远程API的桥接平台开发
- 解决BIOS刷写错误28:PRR.exe的应用与效果
- 深度学习对抗攻击库:adversarial_robustness_toolbox 1.10.0
- Win7系统CP2102驱动下载与安装指南
- 深入理解Java中的函数式编程技巧
- GY-906 MLX90614ESF传感器模块温度采集应用资料
- Adversarial Robustness Toolbox 1.15.1 工具包安装教程
- GNU Radio的供应商中立SDR开发包:gr-sdr介绍