什么是面向对象编程?

image.png
image.png

面向对象的特性

image.png

=============

对象

JS - 对象 Object

对象的继承

image.png
image.png

原型 prototype 及 原型链

https://www.yuque.com/yejielin/mypn47/hat5qx

对象的继承方案

https://www.yuque.com/yejielin/mypn47/fmgnl3

内置对象(原生对象)

https://www.yuque.com/yejielin/mypn47/oszhco

原生对象原型

Object、Array、String 等,都在原型上定义了很多方法,但不推荐,这样做很可能:
1、造成误会,
2、引发命名冲突(比如一个名称在某个浏览器实现中不存在,在另一个实现中却存在)。
3、意外重写原生的方法。

  1. // 给内置对象String定义新的方法
  2. String.prototype.startsWith = function (text) {
  3. return this.indexOf(text) === 0;
  4. };
  5. let msg = "Hello world!";
  6. console.log(msg.startsWith("Hello")); // true

推荐的做法是创建一个自定义的类,继承原生类型。

原型与继承的一些方法

https://www.yuque.com/yejielin/mypn47/tz7fpo

原型关系图

image.png

类 class

类就是对象通过原型和原型链继承的语法糖(简化操作),是ES6版本(又叫ES2015)开始出现的
image.png
https://www.yuque.com/yejielin/mypn47/rkyfne

对象的多态

image.png
再通俗点说,就是同一个函数,不同的参数,就执行不同的方法,得到不同的结果。

image.png image.png 不同的2个参数
image.png同一个函数
image.png 得到不同结果