Why use an accessory (getters and setters)?

var obj = {
  get foo(){//Why can't I use argument ^!^
    return 'getter';
  },
  set foo(value){
    console.log('setter: '+value);
  }
}

> obj.foo = 'bla'
setter: bla
>obj.foo
'getter'

So, I wanted to get the foo value when it is set:

>obj.foo = 'bla'
setter: bla
>obj.foo
getter: bla

Using the following:

get foo(value){//but alas, I can't use any argument in getter
    return 'getter: '+value;
  }

Can we get the value that we set after? I think I do not understand the use of accessor, why do we use it specifically for?

+4
source share
3 answers

Perhaps this will explain you more.

var obj = {
 get foo(){
  console.log('getter'); 
  return this._foo;}, 
 set foo(v){
  console.log('setter'); 
  this._foo = v;
 }
}

when receiving a value from an object that passes a parameter, it will not mean anything.
while setting the value passed by the parameter will mean and represent the value that needs to be set.

Chrome console AFter object initialization

obj.foo = "UI"
setter
"UI"

obj.foo
getter
"UI"
+2
source

. getter, , get.

, getter setter , -, getter, setter.

, , .

var obj = {
  get foo(){
    return this.___foo___
  },
  set foo(value){
    this.___foo___ = value;
  }
}

, get set - ___foo___.

0

/, .
, :

var obj = {
  _a:0,
  get a(){ return this._a;},
  set a(value){this._a+=value;}
}

obj.a = 5;
obj.a = 7;
obj.a
12

, -,
, getter , setter .

If you need a simple property, just use

{a:0} 

instead

{_a:0,get a(){return this._a;},set a(v){this._a=v;}}

Another snippet with js 'privates':

function Obj(key) {
  var private = 0;
  var authorized = false;
  return {
    set token(v) {authorized = (v===key);},
    set data(v) {if(authorized) private = v;}
    get data() {return authorized?private:undefined;}
  }
}
obj = new Obj('pass');
obj.data = 5; // no effect
obj.token = 'pass';
obj.data = 'Data'; //Now works!
///...
0
source

All Articles