面向对象

101 阅读2分钟

面向对象

概述

面向对象是一种编程思想(oop),他主要的核心就是抽取对应的对象(封装)万物皆对象,调用对象的方法。里面的主要的思维就是找有对应的方法的对象做对应的事情(调用对应的方法)

面向对象与面向过程

  1. 面向过程(关注于过程)
  2. 面向对象(关注于对象)

对象的构建

使用new关键词

直接调用对应的构造函数(es3)

构造函数 首字母大写

调用class的constructor(es6) 使用工厂函数

class和构造函数的区别
  1. class使用了严格模式 不能重复声明一个名字 构造函数没有使用严格模式 可以重复声明
  2. class 不会预编译 构造函数会预编译
  3. class必须使用new关键词调用(不使用new关键词会报错) 构造函数可以不使用new 关键词调用
  4. class可以使用extends来继承 它可以继承静态属性
工厂函数和构造函数的区别
  1. 工厂函数 批量生产生成 忽略细节
  2. 构造函数 一对一生成 关注细节
new关键词做了什么
  1. 自动构造对象(将构造对象的原型指向构造函数的原型)
  2. 自动执行构造函数(将当前构造对象作为this传递 执行对应的构造函数)
  3. 自动返回对象

面向对象的三大特性

封装 (抽取对应的名词为属性 抽取对应的动词为方法)
继承 (子类继承父类的非私有内容)
多态 (基于继承关系 子类是父类的另一种形态体现)
  1. 重写(子类重写父类的方法)
  2. 重载(在一个类中 有两个同名的方法 (通过参数个数及参数类型进行区分)) 重载在js中不存在 (js弱类型语句 不能强制性指定类型,js的函数允许少传参,相同的变量在同一作用域内会产生覆盖)