get 必须要有返回值,set 至少要有一个参数。
只有get没有set,那fullname是只读属性只可访问不可修改。
只有set没有get,那fullname属性也访问不到。因为nameObj对象里并没有fullname这个属性,返回的是undefined。
当访问某个属性时nameObj.fullName,get执行。
当设置(修改)某个属性时nameObj.fullName = '水镜_月明',set执行
class People{
firstName:string
lastName:string
constructor(first:string, last:string) {
this.firstName = first
this.lastName = last
}
get fullName() {
console.log('get中......')
return this.firstName+this.lastName
}
set fullName(strArgs) {
console.log('set中......')
var nameArr = strArgs.split('_')
console.log(nameArr) //["水镜", "月明"]
this.firstName = nameArr[0]
this.lastName = nameArr[1]
}
}
var nameObj = new People('诸葛','孔明')
console.log(nameObj) //People {firstName: "诸葛", lastName: "孔明"}
console.log(nameObj.fullName) //诸葛孔明
// nameObj.fullName = '水镜_月明' //只有get没有set,那fullname是只读属性只可访问不可修改。
nameObj.fullName = '水镜_月明'
// console.log(nameObj.fullName)//undefined 只有set没有get,那fullname属性也访问不到。因为nameObj对象里并没有fullname这个属性,返回的是undefined。
console.log(nameObj.fullName) //水镜月明