JavaScript面向对象实践:共享属性与独立属性解析
版权申诉
43 浏览量
更新于2024-08-18
收藏 18KB DOCX 举报
"javascript面向对象程序设计实践常用知识点总结"
JavaScript是一种动态类型的脚本语言,它在Web开发中扮演着至关重要的角色,特别是在面向对象(Object-Oriented Programming, OOP)设计模式中。以下是对JavaScript面向对象编程的一些关键知识点的详细解释:
1. **原型(Prototype)**
- JavaScript中的每个对象都有一个`__proto__`属性,指向其构造函数的原型。原型用于实现继承,可以添加或重写对象的方法和属性。
- 在实践一中,我们看到`Person.prototype.info`是一个引用类型的属性,被所有实例共享。因此,修改`p1.info.name`会影响到`p2.info.name`,因为它们指向同一个内存地址。
2. **原型链(Prototype Chain)**
- 当试图访问对象的一个属性时,如果该属性不存在,JavaScript会沿着原型链向上查找,直到找到该属性或者到达原型链的顶端(即`null`)。
3. **属性和方法的定义**
- 构造函数内部使用`this`关键字定义实例属性和方法,如`Person`构造函数中的`this.name`和`this.age`。
- `Person.prototype`上定义的属性和方法是所有实例共享的,例如`buy`方法。
4. **属性屏蔽(Shadowing)**
- 实践四展示了属性屏蔽现象,即在实例对象中定义的同名属性会遮蔽原型中的同名属性。`p`实例上的`name`属性覆盖了原型上的`name`,所以调用`p.name`返回的是实例上的值。
5. **原型的引用类型赋值**
- 实践二说明,如果在实例化后对原型引用类型的属性重新赋值,将创建一个新的对象引用,原有的引用不会受到影响。因此,`p1.info`和`p2.info`指向不同的内存地址。
6. **构造函数和实例**
- `new`关键字用于创建构造函数的实例,例如`var p1 = new Person()`。`new`操作符会执行以下步骤:
- 创建一个新对象。
- 将新对象的`__proto__`指向构造函数的`prototype`。
- 执行构造函数体内的代码,`this`指向新创建的对象。
- 如果构造函数没有返回值,返回新对象。
7. **方法覆盖和复写**
- 如果实例或子类中定义了与父类原型相同的方法,那么在实例上调用这个方法时,会优先执行实例或子类中的方法,这就是方法覆盖。
这些是JavaScript面向对象编程中的一些基础概念,理解和熟练掌握它们对于编写可维护和扩展的代码至关重要。在实际开发中,还需要考虑其他高级特性,如`class`语法、模块化、闭包等,以提高代码质量和可读性。
2021-10-09 上传
2022-02-07 上传
2019-01-08 上传
2022-11-05 上传
2021-10-05 上传
2021-09-30 上传
2021-10-07 上传
2022-07-01 上传
2022-06-18 上传
惚如远行客
- 粉丝: 0
- 资源: 5209
最新资源
- 深入浅出:自定义 Grunt 任务的实践指南
- 网络物理突变工具的多点路径规划实现与分析
- multifeed: 实现多作者间的超核心共享与同步技术
- C++商品交易系统实习项目详细要求
- macOS系统Python模块whl包安装教程
- 掌握fullstackJS:构建React框架与快速开发应用
- React-Purify: 实现React组件纯净方法的工具介绍
- deck.js:构建现代HTML演示的JavaScript库
- nunn:现代C++17实现的机器学习库开源项目
- Python安装包 Acquisition-4.12-cp35-cp35m-win_amd64.whl.zip 使用说明
- Amaranthus-tuberculatus基因组分析脚本集
- Ubuntu 12.04下Realtek RTL8821AE驱动的向后移植指南
- 掌握Jest环境下的最新jsdom功能
- CAGI Toolkit:开源Asterisk PBX的AGI应用开发
- MyDropDemo: 体验QGraphicsView的拖放功能
- 远程FPGA平台上的Quartus II17.1 LCD色块闪烁现象解析