面向对象
面向对象是程序中一个非常重要的思想,简而言之就是程序中所有的操作都需要通过对象来完成,对象中有属性和方法
举例:
操作浏览器要使用window对象
操作网页要使用document对象
操作控制台要使用console对象
要想面向对象,操作对象,首先要拥有对象
要创建对象,必须要先定义类,所谓的类可以理解为对象的模型
程序中可以根据类创建指定类型的对象
举例来说:
可以通过Person类来创建人的对象,通过Dog类创建狗的对象,不同的类可以用来创建不同的对象
定义类
/* 使用class关键字定义类 属性有2种: 1、实例属性 定义:直接定义 使用:通过new关键字创建一个实例对象,对象去调用该属性 2、静态属性,也叫类属性 定义:在定义该属性前加上static关键字 使用:直接通过类名访问该属性 方法和属性一样,加上static就是静态方法 */ class Person { readonly name: string = '小明' // 只读属性 age: number = 19 static age: number = 18 sayHello() { console.log('hello') } } const p = new Person() console.log(p) // Person {name: '小明', age: 19} // p.name = 'xx' // 只读属性不可赋值 p.age = 88 console.log(p.name) // 小明 console.log(p.age) // 88 p.sayHello() // hello console.log(Person.age) // 18
构造函数和this
在new一个对象时会调用constructor函数
class Dog { // 1、在类中定义属性 name: string age: number bark() { // 方法中的this指向调用该方法的对象 console.log('汪汪汪', this) } // 2、在构造函数中进行赋值 constructor(name: string, age: number) { // new Dog()时执行构造函数,这里的this指向实例对象 this.name = name this.age = age } } const dog = new Dog('旺财', 3) const dog1 = new Dog('阿黄', 4) console.log(dog) // {name: '旺财', age: 3} console.log(dog1) // {name: '阿黄', age: 4} dog.bark() // 汪汪汪 {name: '旺财', age: 3} dog1.bark() // 汪汪汪 {name: '阿黄', age: 4}