[js] js中的 set & get

来源:互联网 发布:曾经网络歌曲 编辑:程序博客网 时间:2024/05/17 03:05

直接上代码

    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;}     
0 0
原创粉丝点击