火狐针对getter与setter搞了四个好东西,__defineGetter__,__defineSetter__,get与set。IE唯一只能模拟__defineGetter__。
Object.prototype.__defineGetter__ = function(attributeName,hanlder){
if(typeof(hanlder)=="string"){
handler=new Function(hanlder);
}
else if(typeof(hanlder)=="function"){
$owner = this;
this[attributeName]={
valueOf:function(){return hanlder.apply($owner, arguments)},
toString:function(){return hanlder.apply($owner, arguments)}
};
}
else throw new TypeError();
}