set、get都是方法,get一般都是有返回的,set是无返回的。
一般把对象中需要使用set、get的变量命名为"_+name"也就是在变量名前面加个下划线以表示是原有量。设置set、get方法时给方法命名为“name”也就是无下划线的变量名。
var man={
weibo:'@Bosn',
_age:null,
get age(){
if (this._age==undefined) {
return new Date().getFullYear()-1988;
}
else{
return this._age;
}
},
set age(val){
if(isNaN(val)&&val>0&&val<150){
this._age=+val;
}
else{
console.log ("Incorrect val="+val);
}
}
};
调用get方法:直接使用man.age,然后便通过get age()方法返回一个值。
调用set方法:man.age=36;然后在console.log(man._age)就会返回36了。
总结:相当于set与get方法和对象里的变量本来是没有关系的,只是相当于设置了get、set他们的名字和变量名差不多,然后通过自己在里面写的函数进行对原变量的改动。相当于就是两个自定义的函数,只是调用的方法不同与一般的函数。