前端关于JS的面向对象概念

什么是面向对象

顾名思义,就是和对象面对面,关注于对象

面向对象是一种编程思想,不是语法

我们一般写的代码是通过逻辑分析,先做什么,再做什么,关注到其中的每一个过程 - 面向过程 - 关注于过程的一种思想
面向对象和面向过程实现的效果是一样的,只不过在写的方面,关注点不同

面向过程是从上到下分析逻辑,中间每个过程都按照顺序来写
面向对象不管中间是什么逻辑,只需要知道其中参与了几个对象,每个对象是干什么的就ok

怎么创建对象

这两种方法都可以
这两种方法都可以,下面那个是构造函数的方法

给对象添加属性
在这里插入图片描述
可以定义个函数用来添加属性
在这里插入图片描述
批量创建相同结构对象的这个函数就是工厂函数

工厂函数创建对象有一个缺点,就是不知道这个对象具体代表什么

构造函数

构造函数就是能用new来创建对象的函数,系统提供的构造函数有Number(),Object()等等

自己也可以定义构造函数,建议第一个字母大写
在这里插入图片描述
此时的 zs 是一个对象

this关键字

构造函数里的 this 指向new出来的对象
在这里插入图片描述
上图 this 指向的就是 zs这个对象

这个new是什么意思

  1. 在构造函数中创建一个空对象
  2. 将函数中的this指向这个空对象
  3. 执行函数中的代码 - 给对象添加属性或方法,给this绑定的东西,其实就在给这个空对象绑定属性或方法
  4. 将这个对象返回
    在这里插入图片描述
    构造函数也可以传参数
    在这里插入图片描述

原型

任何函数天生自带一个属性叫 prototype,这个属性指向一个对象
在这里插入图片描述在这里插入图片描述
任何对象天生自带一个属性叫 __proto__指向的也是一个对象
在这里插入图片描述在这里插入图片描述
被构造函数new出来的对象的__proto__指向的对象和构造函数的prototype指向的对象是同一个
在这里插入图片描述在这里插入图片描述
这个对象就是 原型

原型有什么用

给原型添加属性和方法,被new出来的对象可以使用原型上的属性和方法
在这里插入图片描述在这里插入图片描述
当访问一个对象中的属性或方法时,先在对象上找有没有,如果没有,就去找个对象的原型上找

原型方法中的 this 指向的是谁调用这个方法就指向谁

原型是对象自带的属性__proto__指向的一个对象
原型中天生自带一个属性叫 constructor ,指向构造函数

原型链

既然对象天生自带一个属性__proto__,指向的是原型,那原型也有一个__proto__属性,指向原型的原型

这样形成的一条链式结构叫做原型链

原型链有什么用

访问一个对象中的属性或方法时,先在对象中找,如果没有就去原型找,原型也没有的话,就找原型的原型,一直往上层原型找,原型的顶层原型叫做null,如果一直找到null,也没有找到,就返回undefined
在这里插入图片描述

面向对象的三大特性

封装性

就是封装一次后,就可以重复使用
在这里插入图片描述在这里插入图片描述
暂时写这么多,以后会慢慢完善这篇文章!!!

发布了2 篇原创文章 · 获赞 5 · 访问量 213

猜你喜欢

转载自blog.csdn.net/AD8XX/article/details/104861368