什么是面向对象
顾名思义,就是和对象面对面,关注于对象
面向对象是一种编程思想,不是语法
我们一般写的代码是通过逻辑分析,先做什么,再做什么,关注到其中的每一个过程 - 面向过程 - 关注于过程的一种思想
面向对象和面向过程实现的效果是一样的,只不过在写的方面,关注点不同
面向过程是从上到下分析逻辑,中间每个过程都按照顺序来写
面向对象不管中间是什么逻辑,只需要知道其中参与了几个对象,每个对象是干什么的就ok
怎么创建对象
这两种方法都可以,下面那个是构造函数的方法
给对象添加属性
可以定义个函数用来添加属性
批量创建相同结构对象的这个函数就是工厂函数
工厂函数创建对象有一个缺点,就是不知道这个对象具体代表什么
构造函数
构造函数就是能用new来创建对象的函数,系统提供的构造函数有Number(),Object()等等
自己也可以定义构造函数,建议第一个字母大写
此时的 zs 是一个对象
this关键字
构造函数里的 this 指向new出来的对象
上图 this 指向的就是 zs这个对象
这个new是什么意思
- 在构造函数中创建一个空对象
- 将函数中的this指向这个空对象
- 执行函数中的代码 - 给对象添加属性或方法,给this绑定的东西,其实就在给这个空对象绑定属性或方法
- 将这个对象返回
构造函数也可以传参数
原型
任何函数天生自带一个属性叫 prototype,这个属性指向一个对象
任何对象天生自带一个属性叫 __proto__指向的也是一个对象
被构造函数new出来的对象的__proto__指向的对象和构造函数的prototype指向的对象是同一个
这个对象就是 原型
原型有什么用
给原型添加属性和方法,被new出来的对象可以使用原型上的属性和方法
当访问一个对象中的属性或方法时,先在对象上找有没有,如果没有,就去找个对象的原型上找
原型方法中的 this 指向的是
:谁调用这个方法就指向谁
原型是对象自带的属性__proto__指向的一个对象
原型中天生自带一个属性叫 constructor ,指向构造函数
原型链
既然对象天生自带一个属性__proto__,指向的是原型,那原型也有一个__proto__属性,指向原型的原型
这样形成的一条链式结构叫做原型链
原型链有什么用
访问一个对象中的属性或方法时,先在对象中找,如果没有就去原型找,原型也没有的话,就找原型的原型,一直往上层原型找,原型的顶层原型叫做null,如果一直找到null,也没有找到,就返回undefined
面向对象的三大特性
封装性
就是封装一次后,就可以重复使用
暂时写这么多,以后会慢慢完善这篇文章!!!