第十八天笔记

面向对象

概述(oop)

面向对象是一种思维,将对应的你需要用到的对象进行提取,将对应方法综合到对应的对象中,在需要调用对应的方法的时候去找对应的对象(万物皆对象(任何东西都可抽取为对象),主要的过程就是找对应的对象做对应的事情面向对象的核心就是找对象

面向对象的三大特性

  • 封装(将对应的属性和方法抽取带对应的类(构造函数)中)

  • 继承(子类继承父类 子类拥有父类非私有属性及方法)

  • 多态(一个东西的多种形态体现(基于继承) 重载(一个类多个函数重名(js中不被允许的)) 重写(子类重写父类的方法))

对象声明的方法

使用new关键字来声明(实际调用的都是 构造函数)

es6新增的class

class Person{
   // 类的构造器
constructor(name){
this.name=name
}
}
// 调用类中的构造器
let person=new Person('jack')

es3自带的构造函数

function Person(name){
this.name=name
}
let person=new Person('jack')

构造函数和class的区别

  • 构造函数的兼容回避class要好

  • 构造函数会进行预编译 class不会

  • 构造函数可以当作普通函数编译

new构造函数的时候主要过程

  • 自动创建对象

  • 手动属性赋值

  • 自动返回对象

使用工厂函数来声明

// 对象工厂函数 (忽略细节)
function factory(name){//创建一个对象
let obj = new object()
// 给对应的属性赋值
obj.name = name// 返回这个对象
return obj
}
let obj = factory('jack')
console.1og(obj)

使用工厂函数的主要过程

  • 手动创建对象

  • 手动属性赋值

  • 手动返回对象

封装

抽取对应的属性和方法(属性为名词,方法为动词)

继承

子类继承父类的非私有属性及方法

使用extends来继承 super指向对应的父类的构造函数

多态

一个物品的多种形态主要右两个内容实现

  • 重载 在同一个类中有两个同名的方法 通过参数个数及参数类型来分辨 js中没有

  • 重写 在子类中重写父类的方法

  •  
posted @ 2023-03-03 20:09  ·阿皓  阅读(20)  评论(0)    收藏  举报