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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步