今日份Ts 出入了解

94 阅读4分钟

image.png

image.png

image.png

image.png

image.png

image.png

image.png

什么是js面向对象?

1js面向对象是一种思想;

2.遵循万物皆对象的准则;程序中的关键模块都可以视为对象,对象都是由属性和方法组成,属性可以理解为对象的特征,是静态的,方法可以理解为对象的行为,是动态的。

3.面向对象会使用对象的属性和方法,它不关注内部的细节和过程;同时也会构造对象。

4.在js中,所有的对象可以分为普通对象和函数对象。而Object ,Function 是JS自带的函数对象。凡是通过 new Function() 创建的对象都是函数对象,其他的都是普通对象。

面向对象有什么特点?

1.抽象
抽象是面向对象最为重要的特征。对象本身的状态与行为,以及对象之间的关系,都是抽象的结果。没有抽象,就没有对象,也就谈不上面向对象了。抽象是一种思维习惯,因此,抽象是面向对象的第一特征。

把同类的对象共有的属性或方法抽出封装成单独的对象,在用到的时候给相应的对象使用; 以学生为例,把他的共同属性提取出来,比如,名字,学号等,而像爱玩还是爱学习,好动还是好静等这些不同的属性可以摒弃;

2.继承
简单来说就是一个对象继承另一个对象的属性和方法; 有两种继承方式:1,对象冒充,优点是可以实现多重继承,初始化 继承自父类的参数;缺点是浪费内存资源,所有的实例都会有一份成员方法的副本;2.原型方式,是指利用了prototype或者说以某种方式覆盖了prototype,从而达到属性方法复制的目的。

举个例子,儿子能继承父亲的姓,孙子也能继承父亲的父亲的姓;

3.封装
复杂的问题简单化,只考虑功能和结果,不考虑过程和内部细节。 举例jq库的使用。
4.多态
同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果。换句话说是引用类型在不同情况下的多种状态; 比如在js中的‘+’,在字符串中是链接作用,在数字中间是加法运算;再比如上课铃响了,上体育课的学生跑到操场上站好,上语文课的学生在教室里坐好一样。 多态最常见的三种方法:重载,重写,接口

class类

ES6引入了 Class(类)这个概念,作为对象的模板。

JS 中并没有一个真正的 class 原始类型, class 仅仅只是对原型对象运用语法糖。所以,只有理解如何使用原型对象实现类和类继承,才能真正地用好 class

基本语法

image.png

image.png

class 类 继承

通过extends关键字实现类的继承

image.png

通过super关键字进行拓展父类构造器或方法

super作用

  1. 子类使用构造器constructor的时候,必须使用super关键字,用来扩展构造器
  2. 子类同名方法会覆盖父类同名方法,使用super关键字后则可以调用到父类的同名函数

image.png

public ,private , protected 修饰符

  1. public
    公开的,谁都能用(默认public)

    构造函数,自己,子类,都可以访问

  2. private
    私有的,仅类自己里头才能使用

  3. protected
    受保护的,仅仅类和类的子类能使用

    构造函数不可以使用

image.png

ts,interface类型

interface -- 接口类型

想要限制对象的类型,或者当一个对象类型被多次使用时,一半会使用接口(intterface)来描述对象的类型。

注:接口只能为对象指定类型

image.png

类实现接口

续要配合implements使用

image.png

枚举 enum

我们了解的枚举中,有字符串枚举,数字枚举

数字枚举

数字枚举自带值,默认从0开始,后面的值依次累加

第一个值为0,则第二个值为1,第三个值为2,第四个值.....

若给第一个值设置为1,则第二个值为2,第三个值为3,第四个值.....

以此类推

image.png

字符串枚举

如果想要字符串枚举,则必须要自己给定值,字符串枚举没有默认值

image.png

ts 继承与js继承相差并不多,主要区别就是定义类型

image.png