TypeScript基础学习(4): 类

es5的方法

最简单的类

 function Person() {
   this.name = 'zy'
   this.age = 27
      this.run = function () {
     console.log( `${this.name} is run`)  // zy is run
   }
 }
 let person = new Person()
 person.sex = 'female'
 console.log('person.name', person.name) // zy
 console.log('person.sex', person.sex) // female

原型链里面增加属性和方法

   Person.prototype.grade = '一年级'
   Person.prototype.work = function () {
     console.log( `${this.name} is work`)  // zy is work
   }
  console.log('person.grade', person.grade) // 一年级
  person.work()

添加静态方法

  Person.getInfo = function () {
      console.log('person.getInfo') // person.getInfo
    }
  Person.getInfo()

继承


1. 对象冒充继承方式,只能继承【构造函数】里的属性和方法
  function Web () {
    Person.call(this) // 
  }
  let web = new Web()
  console.log('Web.name', web.name) //  zy
  console.log('Web.grade', web.grade) // undefined

2. 原型链继承方式,能继承【构造函数】和【原型链】上的属性和方法
   不能传参调用
  function Web () {
  }
  Web.prototype =  new Person()
  let web = new Web()
  console.log('Web.name', web.name) // zy
  console.log('Web.grade', web.grade) // 一年级
3. 对象冒充 + 原型链继承方式
 function Person(name, age) {
      this.name = name
      this.age = age
      this.run = function () {
      console.log( `${this.name} is run`)  // zy is run
      }
    }
    function Web(name, age) { 
      Person.call(this, name, age) // 继承构造函数的属性和方法
    }
    Web.prototype = Person.prototype // 继承原型链的属性和方法
    let web = new Web('zy', 27)
    web.run()

es6的方法

最基础的类

class Person {
    name: string; // 属性,前面省略了public关键字
    constructor (n:string) { // 构造函数,实例化类的时候触发的函数
        this.name = n
    } 
    run ():void {
        console.log(`${this.name} is run`) // zy is run
    }
} 
let person = new Person('zy')
person.run()

继承

class Person {
    name: string; // 属性,前面省略了public关键字
    constructor (name:string) { // 构造函数,实例化类的时候触发的函数
        this.name = name
    } 
    run ():void {
        console.log(`${this.name} is run`) // ying is run
    }
} 


class Web extends  Person{
    constructor (name:string) {
        super(name) // 初始化父类的构造函数
    }
}
let web = new Web('ying')
web.run()

类里面的修饰符

public 公有 在类里面、子类、类外面都可以访问
protected 保护类型 在类里面、子类里面可以访问,在类外部没法访问
privated 私有 在类里面可以访问 子类、类外面不可以访问

你可能感兴趣的:(typescript)