面向对象三大特点

发布于 2023-01-06 12:53:17 字数 3117 浏览 76 评论 0

封装

  1. 封装就是创建一个对象,集中保存现实中一个事物的属性和功能。
  2. 将零散的数据封装进对象结构中,极其便于大量数据的管理维护。
  3. 今后,只要使用面向对象思想开发时,第一步都是先封装各种各样的对象结构备用。

封装对象三种方式

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 的过程

  1. 创建一个新的空对象等待
  2. 让子对象继承构造函数的原型对象
  3. 调用构造函数,将 this 替换为新对象,通过强行赋值方式为新对象添加规定的属性
  4. 返回新对象地址

继承

只要将方法定义放在构造函数中, 那么,每次 new 时都会执行 function, 就会反复创建相同函数的多个副本!——浪费内存,如果将来发现多个子对象都要使用相同 的功能和属性值时, 都可以用继承来解决

什么是继承

父对象中的成员 ,子对象无需重复创建,就可直接使用! 就像使用自己的成员一样!this.属性名/方法名()

js 中继承都是通过原型对象实现

什么是原型对象:替所有子对象集中保存共有属性值和方法的父对象

何时使用原型对象:今后,只要发现多个子对象 都需要使用相同的功能和属性值时,都可将相同的功能和属性值 集中定义在原型对象中。

如何创建原型对象:不用自己创建。 而是在定义构造函数时,程序自动附赠我们一个空的原型对象。

如何找到原型对象:构造函数中都有一个自带的属性 prototype,指向自己配对的原型对象。 • 构造函数.prototype

何时如何继承:不用自己设置继承关系!

  • new 的第二步自动让新创建的子对象, 继承构造函数的原型对象。
  • new 的第二步自动设置子对象的 _proto_ 属性,指向构造函数的原型对象。

如何向原型对象中添加共有属性:

• 只能强行赋值:
• 构造函数.prototype.属性名=属性值
• 构造函数.prototype.方法名=function(){… …}

多态

什么是多态:同一个函数 在不同情况下表现出不同的状态

包括 2 种:

  • 重载 overload:同一个函数,输入不同的参数,执行不同的逻辑
  • 重写 override:推翻、遮挡

面向对象小总结

  1. 封装:创建对象,2 种:如果只创建一个对象:{} 如果反复创建多个相同结构的对象:构造函数
  2. 继承:所有子对象共用的属性值和方法,都要放在构造函数的原型对象中
  3. 多态:重写:只要觉得从父对象继承来的成员不要用,都在子对象中重写同名成员

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

说好的呢

暂无简介

文章
评论
26 人气
更多

推荐作者

櫻之舞

文章 0 评论 0

弥枳

文章 0 评论 0

m2429

文章 0 评论 0

野却迷人

文章 0 评论 0

我怀念的。

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文