直接上代码
function People (){
}
People.prototype.__defineGetter__("_Name_",function(){
return "--"+this.name+"--";
});
People.prototype.__defineSetter__("fullName",function(x){
this.name = "tom " + x;
});
var people = new People();
people.fullName="jack";
alert(people._Name_); //--tom jack--
or 写在里面
var o = {
value:9,
get get() {return this.value+1;},
set set(x) {this.value = x + 1;}
}
o.set = 10;
alert(o.get) //12
区别嘛
就是一个使用构造器构造
一个使用了对象
前者可以给浏览器默认对象添加方法啦
还可以实现私有成员ww
function P(value){
var value = value;
this.__defineSetter__("set",function(v){ value= v });
this.__defineGetter__("get",function(){return value})
}
var p = new P(100);
alert(p.get);//100
p.set = 20;
alert(p.get);//20
alert(p.value);//undefind
课外知识:
__lookupGetter__ & __lookupSetter__
都是return 一个function
function P(value){
var value = value;
this.__defineSetter__("set",function(v){ value= v });
this.__defineGetter__("get",function(){return value})
}
var p = new P(100);
console.log(p.__lookupGetter__("get").toString()); //function (){return value}
console.log(p.__lookupSetter__("set").toString());//function (v){ value= v }
and
var o = {
value:9,
get get() {return this.value+1;},
set set(x) {this.value = x + 1;}
}
console.log(o.__lookupSetter__("set").toString());//function set(x) {this.value = x + 1;}
console.log(o.__lookupGetter__("get").toString());//function get() {return this.value+1;}