面向对象

面向对象

1,什么是面向对象

所谓的面向对象,是一种编程思想,编程思路,代码的书写格式

之前为了简化代码,我们是将程序封装为函数的形式来调用

函数会有一些小问题:

​ 函数内部定义的局部作用域变量,函数外部无法直接调用

​ 函数调用使用时,会占用大量的系统内存,容易造成数据溢出数据泄露,容易被黑客攻击

​ 函数一般只是封装一些模块化的功能

复杂程序的封装会,封装成其他形式,使用面向对象的方式来封装程序

2,简单介绍面向对象的编程思想

​ 我们之前的编程方式,称为面向过程的编程方式

​ 面向过程和面向对象编程思想的区别

​ 举例生活中的实例 : 中午要吃饺子

​ 面向过程

​ 1,和面

​ 2,和饺子馅

​ 3,包饺子–擀皮,放馅,包饺子

​ 4,烧水

​ 5,水开了煮饺子

​ 6,捞饺子

​ 7,吃饺子

​ 面向对象

​ 1,找一个饺子馆 — 封装的面向对象的程序,完成制作饺子的过程,我们只要点就可以了

​ 2,点饺子 — 调用封装的程序

​ 3,做好了吃饺子

​ 4,结账

总结

面向过程 : 自己独立的一步一步的完成程序的定义和执行

面向对象 : 有封装好的面向对象的的程序 , 直接调用执行就可以了 , 功能和作用类似于 封装好的函数 , 但是 封装的语法和思想与函数不同

3.对象的优点
1,对象中,可以定义并且存储多个数据单元以及所有JavaScript支持的数据类型

const obj = {age:18,name:'张三',fun:()=>{},arr:[1,2,3,]}

2,对象中,调用具体数据很方便 , 调用数据时,不用考虑数据的顺序

调用 name 和 age 都是不用考虑 数据单元的顺序 , 只要键名/属性 输入正确就可以了

const obj1 = {age:18,name:'张三'}

const obj2 = {name:'张三',age:18}

3,对象中,可以定义函数,还可以通过函数的this,方便的调用对象本身的数据

调用对象的数据,不用管对象名称 是什么,只要通过this,就可以指向这个对象

obj1 中的 this,指向的就是obj1 obj2 中的 this,指向的就是obj2

const obj1 = {age:18,name:'张三',fun:function(){ console.log(this.name) }}

const obj2 = {age:18,name:'张三',fun:function(){ console.log(this.name) }}

4.面向对象编程的优点和特点
1. 高内聚

将所有需要的程序,都定义封装在对象内 , 对象中存储所有需要的属性,所有需要的方法2.

2. 低耦合

尽量减少特殊程序的执行

特点 1 :抽象

通过描述 对象 共有的特点(属性和属性值) , 来形容一个对象 , 这个对象不是一个非常具体事例的内容,是一个抽象化的实例

特点 2 :封装

将所有的程序,都定义在一个对象中

5.自定义构造函数
创建对象的方法

字面量 const obj = {}

构造函数 const obj = new Object()

构造函数的执行流程:

1.立即创建一个新的对象在堆内存中(在构造函数中自行创建一个对象)

2.将新建的实例化对象设置为函数中this,在构造函数中可以使用this来引用新建的实例化对象

3.逐行执行函数中的代码

4.将新的对象作为返回值返回

6.原型对象原型属性原型链
1,原型对象

每一个函数,天生都有一个 prototype 属性,称为原型对象 , 是一个专门用来存储数据,函数等内容的空间

2,原型属性

每一个对象,天生都有一个 __ proto __ 属性,称为原型属性

实例化对象的原型属性,指向的创建实例化对象的构造函数的 prototype

函数,数组,等,JavaScript中的数据类型 , 实际存储的形式都是一个对象,都会有 __ proto __ 属性

3,原型链

所谓的原型链,就是所有相互关联的变量,使用 __ proto __ 属性串联起来

实例化对象的 __ proto __ 指向构造函数的 prototype , 构造函数中又有__ proto __属性 ,可以通过它的这个属性来指向上一级的实例化对象 , 上一级的实例化对象又可以通过自身的 _proto属性来指向下一个构造函数的prototype…

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值