JavaScript-面向对象

本文章仅是我自己对面向对象的理解(ES5)(有不对的地方欢迎指正,码字不易,点个赞吧),很小白的文章,一步一步的介绍哦

面向对象

什么是面向对象?

面向对象:不是一门技术,是一种解决问题的思维方式
面向过程:注重的是过程
面向对象: 注重的是结果
面向对象的本质是对面向过程的封装

面向过程 -> 注重的是过程

举个例子 如果你要吃饭 ,你要有以下步骤:
1 买菜
2 洗菜
3 开火热锅
4 放油
5 炒菜
6 放佐料
7 盛菜
8 吃饭

面向对象 -> 注重的是结果

如果你要吃饭 ,找一个专业的人来解决,但是步骤就没有了吗?
不是的,只是这个步骤,有人替你完成了,所以你只需要吃饭就可以了。

有了面向对象 就可以不需要面向过程了吗?
不是的 面向对象的本质是对面向过程的封装

什么是对象?

对象的含义

(1)代码: 是一种数据类型,以键值对的形式来存储数据

(2)现实:  对现实世界单个事物的抽象(万物皆对象)

对象的本质 : 沟通 现实世界 与 程序世界的一座桥梁

例如:

//使用对象来描述一个人
var zhangSan={
name:'张三',//名字
age:18,//年龄
sex:'男'//性别
}

如何寻找对象(真实存在的物体) 名词提炼法(找名词)
例如:
小明在公交车上牵着一条叼着热狗的狗
对象:
小明,公交车,热狗,狗

原型对象

原型对象:
js中每一个函数在声名的时候,系统都会自动创建一个与之对应的对象,称之为原型对象。

//声明一个自定义构造函数
function Person(name,age){
//new 关键字工作原理 
//(1)创建一个空对象
//(2) this指向这个对象
//(3)执行构造函数赋值代码
//(4)自动返回这个对象
this.name=name;
this.age=age;
}
var zhangSan=new Person('张三',18);
//在控制台打印原型对象
console.log(Person.prototype);
/*可以访问这个原型中的属性/方法
 (1) 构造函数自身 : 构造函数.prototype
 (2) 构造函数创建的每一个实例对象 : 直接访问
*/
__proto__属性

在这里插入图片描述

constructor属性

在这里插入图片描述

构造函数,原型对象,实例对象三者的关系

(1)只要是函数就有一个属性prototype指向原型对象
*作用 :解决内存资源浪费,全局变量污染
(2) 只要是原型就有一个属性constructor指向构造函数
*作用:让实例对象知道自己被那个构造函数创建
(3)只要是实例对象就有一个属性__proto__指向原型对象
*作用: 让实例对象可以访问 原型中每一个属性/方法

注意点:
1 那些属性可以添加到原型中: 所有实例化对象共享的成员
2 对象的访问规则 就近原则
3 原型对象可以重新赋值,实例对象访问修改钱原型的还是修改后的原型,取决于这个对象什么时候创建
修改前创建:修改前的原型
修改后创建:修改后的原型
在这里插入图片描述

面向对象的三大特征

封装

将代码放入对象的方法中。

继承

一个对象拥有其他对象的属性+方法

三种方式 (这里介绍三种)
方式一

在这里插入图片描述

方式二

在这里插入图片描述

方式三

在这里插入图片描述

多态

一个对象在不同的情况下多种状态
在这里插入图片描述

原型链

js中所有的对象都是构造函数生成
1. 原型链 : js中只要是对象,就有__proto__属性指向自己的原型。 而原型也是对象,也有自己的原型,以此类推形成的一种链式结构,称之为原型链。
2. 对象访问原型链中成员的规则 : 就近原则
当对象访问成员的时候,会先看对象自己有没有。如果有则访问,没有则继续看原型有没有,如果原型有则访问,原型没有则继续看原型的原型有没有,以此类推,一直找到原型链的终点 (null)。 如果还没有找到
如果是属性,则获取undefined (对象属性不存在则获取undefined)
如果是方法,则报错。 xxx is not a function (原因 undefined不是函数,没有调用语法)

函数属于对象类型

在这里插入图片描述

js中所有的对象都是构造函数创建

在这里插入图片描述

完整的原型链

依靠四句话 来画原型链图

1 只要是构造函数,就有prototype属性指向自身的原型对象
2 只要是原型对象,就有constructor属性指向自身构造函数
3 只要是对象,就有__proto__属性指向与之对应的构造函数的原型对象
4 函数本身也是对象
在这里插入图片描述

看到这里了的话,点个赞吧,码字不易谢谢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值