Ruby's Louvre

每天学习一点点算法

导航

IE下的__defineGetter__

火狐针对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();
  }

posted on 2009-09-20 15:02  司徒正美  阅读(2120)  评论(0编辑  收藏  举报