1.只读修饰符
readonly
class F {
readonly a =444;
}
class S extends F {
}
let s = new S;
console.log(s.a);
s.a = 999 ;//无法分配到 "a" ,因为它是只读属性。
2.静态修饰符
static
class F {
static a =444;
static show (){
console.log(this.a);
}
}
class S extends F {
}
let s = new S;
// console.log(s.a);
// console.log(s.show());
console.log(S.a); // 444
//属性“show”在类型“S”上不存在。你的意思是改为访问静态成员“S.show”吗?
//属性“a”在类型“S”上不存在。你的意思是改为访问静态成员“S.a”吗?
静态属性和方法只能通过类本身和子类访问、实例无法访问
3.访问修饰符
public、protected、pravite
默认为public 没有访问限制
protected
class F {
protected a =444;
show (){
return this.a
}
}
class S extends F {
getA (){
return this.a
}
}
let s = new S;
console.log(s.getA()); //444
只能在基类和子类访问 ,实例不能直接访问,可以通过方法充当中间人
pravite
class F {
private a =444;
show (){
return this.a
}
}
class S extends F {
}
let s = new S;
console.log(s.show()); //444
只能在基类中访问,
总结:
只有一种情况下类本身能 . 出属性和方法 那就是 加 static 之后
访问修饰符 的目的限制访问的类中属性方法 的可见性,类本身在外部也无法访问,只能通过实例
访问类中的中间方法return 出来