TypeScript快速上手學習筆記-第十篇——屬性
阿新 • • 發佈:2021-02-10
技術標籤:TypeScript前端程式設計javascripttypescript前端
一、 public
public修飾屬性可以是屬性在任意位置訪問(修改)預設值
class Person {
// public修飾屬性可以是屬性在任意位置訪問(修改)預設值
public _name:string;
constructor(name:string){
this._name=name;
}
}
let per=new Person("ts");
console.log(per);
console.log(per._name);
per._name= "js";
console.log(per._name);
二、private
private私有屬性,只能在類的內部進行訪問(修改),但是可以在類中新增方法是私有屬性可以在外被訪問
class Person {
// private私有屬性,只能在類的內部進行訪問(修改),但是可以在類中新增方法是私有屬性可以在外被訪問
private _name:string;
constructor(name:string){
this._name=name;
}
}
let per=new Person("ts");
console.log (per);
console.log(per._name);//報錯
per._name="js";//報錯
console.log(per._name);//報錯
會因為無法外部訪問修改而報錯。
但是可以在類中定義方法是私有屬性可以外部訪問修改,即setter,getter方法。
class Person {
// private私有屬性,只能在類的內部進行訪問(修改),但是可以在類中新增方法是私有屬性可以在外被訪問
private _name:string;
constructor(name:string){
this._name=name;
}
setName (name:string){
this._name=name;
}
getName(){
return this._name;
}
}
let per=new Person("ts");
console.log(per);
console.log(per.getName())
per.setName("js")
console.log(per.getName())
當然TS裡有自帶的setter,getter方法,可以讓操作過程請傾向於屬性
class Person {
// private私有屬性,只能在類的內部進行訪問(修改),但是可以在類中新增方法是私有屬性可以在外被訪問
private _name:string;
constructor(name:string){
this._name=name;
}
get name():string{
return this._name;
}
set name(name:string){
this._name=name;
}
}
let per=new Person("ts");
console.log(per);
console.log(per.name);
per.name="js";
console.log(per.name);
三、protected
受繼承的影響只能在類本身或者子類中訪問和修改
class Man{
protected name:string;
constructor(name:string){
this.name=name;
}
out(){
console.log(this.name)
}
}
let m=new Man("ds");
m.out();
class Min extends Man{
}
let min=new Min("min");
min.out();
console.log(m.name);//報錯
console.log(min.name);//報錯
四、constructor簡易寫法
constructor(public name:string){
}
相當於
public name:string;
constructor(name:string){
this.name=name;
}