面向对象三大特点
封装
- 封装就是创建一个对象,集中保存现实中一个事物的属性和功能。
- 将零散的数据封装进对象结构中,极其便于大量数据的管理维护。
- 今后,只要使用面向对象思想开发时,第一步都是先封装各种各样的对象结构备用。
封装对象三种方式
1.直接用字面量 {}
var 对象名 = { //new Object()的简写
属性名: 属性值,
... : ... ,
方法名: function(){ ... }
}
2.用 new: new Object()
var 对象名 = new Object(); //先创建空对象{}
//强行给空对象中添加新属性和新方法
对象名.新属性=属性值;
对象名.新方法=function(){ ... this.属性名 ... }
揭示了 js 语言底层最核心的原理:其实 js 中所有对象底层都是关联数组
ii. 访问成员时:
- 标准写法都是:
对象名/数组名[成员名]
- 简写都是:
对象名/数组名.成员名
- 比如:
lilei['sname']
和lilei.sname
都行
强调:访问对象属性/数组元素,其实有3种方式
- 标准: 如果下标名后数组名是已知的,对象或数组[已知的属性名或下标名]
- 简写: 如果下标名后数组名是已知的
- 如果下标名是数字,可简写为[已知的数字下标]
- 如果下标名是非数字的字符串,可简写为.已知的属性名
- 如果属性名或下标不是写死的!来自于一个变量!只能用[变量],不能用.
3.用构造函数
使用前景:用{}一次只能创建一个对象。 如果想创建多个相同结构的对象时,代码就会很多重复! ——极其不便于将来的维护。
1 定义构造函数:
function 类型名(形参1, 形参2, ...){
//将来要加入到新对象中的规定的属性
this.属性名=形参1;
this. xxx = xxx;
this.方法名=function(){ ... this.属性名 ... }
}
2 使用构造函数反复创建多个相同结构的对象
• var 对象名=new 类型名(实参值1, 实参值2, ...)
• 至少做2件事儿:
- 创建指定类型的一个新对象
- 同时把实参值传给构造函数的形参变量。
3 原理
function 类型名(形参1, 形参2, ...){
//将来要加入到新对象中的规定的属性
this.属性名=形参1;
this. xxx = xxx;
this.方法名=function(){ ... this.属性名 ... }
}
var 对象名=new 类型名(实参值1, 实参值2, ...)
new 的过程
- 创建一个新的空对象等待
- 让子对象继承构造函数的原型对象
- 调用构造函数,将 this 替换为新对象,通过强行赋值方式为新对象添加规定的属性
- 返回新对象地址
继承
只要将方法定义放在构造函数中, 那么,每次 new 时都会执行 function, 就会反复创建相同函数的多个副本!——浪费内存,如果将来发现多个子对象都要使用相同 的功能和属性值时, 都可以用继承来解决
什么是继承?
父对象中的成员 ,子对象无需重复创建,就可直接使用! 就像使用自己的成员一样!this.属性名/方法名()
js 中继承都是通过原型对象实现
什么是原型对象:替所有子对象集中保存共有属性值和方法的父对象
何时使用原型对象:今后,只要发现多个子对象 都需要使用相同的功能和属性值时,都可将相同的功能和属性值 集中定义在原型对象中。
如何创建原型对象:不用自己创建。 而是在定义构造函数时,程序自动附赠我们一个空的原型对象。
如何找到原型对象:构造函数中都有一个自带的属性 prototype,指向自己配对的原型对象。 • 构造函数.prototype
何时如何继承:不用自己设置继承关系!
- new 的第二步自动让新创建的子对象, 继承构造函数的原型对象。
- new 的第二步自动设置子对象的 _proto_ 属性,指向构造函数的原型对象。
如何向原型对象中添加共有属性:
• 只能强行赋值:
• 构造函数.prototype.属性名=属性值
• 构造函数.prototype.方法名=function(){… …}
多态
什么是多态:同一个函数 在不同情况下表现出不同的状态
包括 2 种:
- 重载 overload:同一个函数,输入不同的参数,执行不同的逻辑
- 重写 override:推翻、遮挡
面向对象小总结
- 封装:创建对象,2 种:如果只创建一个对象:{} 如果反复创建多个相同结构的对象:构造函数
- 继承:所有子对象共用的属性值和方法,都要放在构造函数的原型对象中
- 多态:重写:只要觉得从父对象继承来的成员不要用,都在子对象中重写同名成员
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

上一篇: 重绘和回流
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论