我们一般定义类中的属性并读取和存储是这样的:
class Person{
//定义内部变量
public _name;
//在构造函数中对name属性进行初始化
constructor(){
this._name=""
}
}
//实例化一个Person类
let personName1=new Person();
//获取name变量
personName1.name; //""
//设置set变量
personName1.name="徽柔"; //此时实例化后的personName1类中的name属性值为徽柔
但当我们需要在用户修改的时候对输入的数据进行判断,符合数据规范则可以改变,不符合则不可以改变的时候,这个时候我们就可以在类的内部定义存取器。具体代码如下:
class Person{
//定义内部name属性
private _name;
//在构造函数中对name属性进行初始化
constructor(){
this._name=""
}
//变量取用函数get
get name(){
return this._name;
}
//变量设置函数set
set name(value:string){
if(value.length<2||value.length>5){
throw new Error("名字不合法,请重新输入")
}
this._name=value;
}
}
//在类的外部调用存取器进行变量的读取和修改
let people=new Person();
//当我们访问类中的name变量时,会自动调用get方法
let personName=people.name;
console.log(people.name); //控制台输出 : ""
//当我们为变量赋予新的值时,会自动调用set方法
people.name="徽柔";
console.log(people.name); //控制台输出 : 徽柔
上述代码在set方法中限制了用户输入的字符串长度必须在2~5之间,否则就生成并抛出一个错误。这样我们就达到对用户的输入值进行限制判断的目的。
注:当我们只定义了get方法时,该属性变为只读属性,无法设置其值。当我们只定义了set方法的时候,该属性无法读取,只能调用set方法设置其中的值。
网友评论