The properties of a JavaScript object consist of a name, a value, and a set of attributes (writable, enumerable, configurable, and so on). In ECMAScript 5, property values can be replaced by one or two methods, which are getter and setter.
var myobj = {
a:2, get
B () {return
3;
}
};
Console.log (MYOBJ.A);//2
Console.log (myobj.b);//3
In the code above, property A is called a " Data property ", and it has only a simple value; properties such as Property B, which are defined with getter and setter methods, are called accessor properties .
Accessor properties are defined as one or two functions that have the same name as a property, which does not use the Function keyword, but uses get or set, and does not use a colon to separate the property name from the function body, but the end of the function body and the next method are separated by commas.
When the program queries the accessor's property value, the JavaScript substitution getter method (without parameters), the return value of this method is the value of the property's access expression. When the program sets an accessor property value, JavaScript invokes the setter method, passing the value on the right side of the assignment expression as a parameter to the setter. In a sense, this method is responsible for setting the property value and can ignore the return value of the method.
When a property is defined as an accessor property, JavaScript ignores its value and writable attributes and replaces the set and get (and configurable and enumerable) attributes.
var myobj = {get
a () {return
2;
}
};
MYOBJ.A = 3;
Console.log (MYOBJ.A);//2
As shown in the preceding code, because we define only the getter of property A, set will ignore the assignment operation and not throw an error when setting a (that is, assigning) a value.
var myobj = {get
a () {return
this._a_;
},
set a (val) {
this._a_ = val;
}
};
MYOBJ.A = 3;
Console.log (MYOBJ.A);//3
The correct wording is as shown above. This in the getter and setter methods points to the MyObj object. Here we store 3 of the assignment operations in another intermediate variable _a_. Name _a_ is just a convention, and there is no other special behavior, it is just a common attribute. Replace it with any other legal name, such as _b_, which can even be printed out on the outside.
var myobj = {get
a () {return
this._b_;
},
set a (val) {
this._b_ = val;
}
};
MYOBJ.A = 3;
Console.log (MYOBJ.A);//3
Console.log (myobj._b_);//3
In addition, accessor properties can also be inherited:
var myobj = {get
a () {return
this._b_;
},
set a (val) {
this._b_ = val;
}
};
MYOBJ.A = 3;
var anotherobj = object.create (myobj);
Console.log (ANOTHEROBJ.A);//3