es6关于class在js和ts中的的一些理解

关于class在 js 和 ts 中的的一些理解

js中:

class Human {
  // 加上static 该属性只能通过Human类去获取;
  // 不加static 该属性可以通过实例去获取 其实等同于写在consturctor里面。只不过是写死的,不能自定义
  static hobby = "吃饭";
    
  constructor(name, age) {
    this.name = name;
    this.age = age;
  }
  // 该属性挂载在构造函数的原型上,以后所有的实例对象都可以访问,是公共的。
  sayHi() {
    console.log(`你好,我是${this.name},今年${this.age}岁。`);
  }
}

关于this的指向:

  • constructor函数内的this指向实例对象

  • 类的方法的this取决于方法是不是箭头函数

    • 如果是箭头函数,this是初始化时就被固定了的,永远指向实例对象
    • 如果是普通函数,那么this是可以被改变的,例如把这个方法赋予给一个变量,调用这个变量,那么this可能是undefined

TS中:

class Monkey {
  // 声明变量
  public name: string
  public age: number
    
  constructor(name: string, age: number) {
    this.name = name
    this.age = age
  }
  public introduce(): string {
    return `猴子 is ${this.name} and I'm ${this.age} years old.`
  }
}

关于关键词:

  • public表示可以被实例对象访问到
  • private表示只能在当前类作用域中被访问
  • protected表示只能在当前类作用域中被访问和继承类中被访问
  • static表示静态属性,只能被类本身访问
  • readonly表示只可读取,不可修改
  • 什么关键字都不写代表默认是public
posted @   baiyujie02420  阅读(40)  评论(0编辑  收藏  举报
努力加载评论中...
点击右上角即可分享
微信分享提示