get, set- геттер і сеттер (getter & setter) привязує властивість до функції.
{
get prop(){
//код функції
}
}
{
get [expression](){
//код функції
}
}
{
set prop(val){
//код функції
}
}
{
set [expression](val){
//код функції
}
}
prop - назва властивості до якої привязується функція.
expression - назва зміної яка містить назву властивості до якої привязується функція.
val - значення яке буде приймати функція.
get прив'язує функцію до властивості об'єкта і при звернені до властивості для отримання значення виконується функція.
getвикористовується якщо необхідно повернути результат приватної властивості або результату який є динамічний або потребує обчислення.
var ob={
num:[7,3,5],
get last(){
if(this.num.length==0)return 0;
return this.num[this.num.length-1];
}
}
alert( ob.last );
var exp='last';
var ob={
num:[7,3,5],
get [exp](){
if(this.num.length==0)return 0;
return this.num[this.num.length-1];
}
}
alert( ob.last );
set привязує функцію до властивості об'єкта і при зміненні значеня властивості виконується функція якій у якості параметра передається значення яке присвоюється.
set використовується для виконання прив'язаної функції при змінені значення властивості об'єкта.
Додати set до існуючого об'єкта можна за допомогою Object.defineProperty().
var ob={
text:[],
set addText(s){
this.text.push(s);
}
};
ob.addText='js';
ob.addText='css';
ob.addText='html';
alert( ob.text );
var exp='addText';
var ob={
text:[],
set [exp](s){
this.text.push(s);
}
};
ob.addText='js';
ob.addText='css';
ob.addText='html';
alert( ob.text );
let user={
name: "Jini",
surname: "Setor",
get fullName(){
return this.name+' '+this.surname;
},
set fullName(value){
fullname=value.split(' ');
this.name=value[0];
this.surname=value[1];
}
};
alert( user.fullName );
class Person{
#name='';
constructor(name){
this.#name=name;
}
get name(){
return 'User: '+this.#name;
}
set name(newName){
newName = newName.trim();
if(newName==='')
this.#name='amonimus';
else
this.#name = newName;
}
}
var u=new Person('Jon');
alert( u.name );