在javascript的类中,可以用defineGetter和defineSetter_控制成员变量的Get和Set行为
例如,在一个图书类中,我们自动为Book加上书名符号:
function Book(name){
this.bookName=name;
this.getName=function(){
return "《"+this.bookName+"》";
}
this.setName=function(name){
this.bookName=name;
}
}
接下来我们只要规定使用者通过setName和getName方法对成员变量bookName操作就可以了.
但实际上还可以更方便:
function Book(name){
this.bookName=name;
this.getName=function(){
return "《"+this.bookName+"》";
}
this.setName=function(name){
this.bookName=name;
}
}
Book.prototype.__defineGetter__("name",function(){return "《"+this.bookName+"》";});
Book.prototype.__defineSetter__("name",function(name){this.bookName=name;});
这样,就可以直接通过Book对象的name属性来返回带有书名符号的字符串而又不影响成员变量本身了.