behavior = "好好学习";
是定义的实例属性,等价于在 constructor 里面定义了
this.behavior = "好好学习";
而类方法 hello 是定义在实例的原型对象上边的。
也可通过 __proto__ 在原型对象上定义属性。
constructor 外的变量 如果没有加static,那么定义的是实例化属性,而不是原型属性,如果加了static定义的是类的私有属性。class 里是不能定义原型属性的,可定义的有:
1、实例化属性
2、实例化方法
3、类的私有属性
4、类的私有方法
5、原型方法
class Example {
a = 1; // 定义的是实例化属性
static b = 2; // 定义类的私有属性
constructor() {
this.c = 3; // 也是定义实例化属性
this.func = () => {}; // 定义实例化方法
}
func() {}; // 定义原型方法,可被实例化对象继承
func2 = () => {}; // 注意如果这里赋值箭头函数那么还是实例化属性,而不是原型方法
static func() {}; // 定义类私有方法
// this.d = 4; 报typescript 错误,因为this对象只存在于constructor默认方法里
}