В този урок ще научите за методите на getter и setter на JavaScript с помощта на примери.
В JavaScript има два вида свойства на обекта:
- Свойства на данните
- Свойства на аксесоарите
Свойство за данни
Ето пример за свойство за данни, което използвахме в предишните уроци.
const student = ( // data property firstName: 'Monica'; );
Собственост на аксесоар
В JavaScript свойствата за достъп са методи, които получават или задават стойността на обект. За това използваме тези две ключови думи:
get
- да дефинирате метод за получаване, за да получите стойността на свойствотоset
- за дефиниране на метод за задаване на стойност на свойството
JavaScript Getter
В JavaScript се използват getter методи за достъп до свойствата на обект. Например,
const student = ( // data property firstName: 'Monica', // accessor property(getter) get getName() ( return this.firstName; ) ); // accessing data property console.log(student.firstName); // Monica // accessing getter methods console.log(student.getName); // Monica // trying to access as a method console.log(student.getName()); // error
В горната програма getName()
се създава метод за получаване за достъп до свойството на обект.
get getName() ( return this.firstName; )
Забележка: За да създадете метод за получаване, get
се използва ключовата дума.
И също така при достъп до стойността, ние имаме достъп до стойността като свойство.
student.getName;
Когато се опитате да получите достъп до стойността като метод, възниква грешка.
console.log(student.getName()); // error
JavaScript Setter
В JavaScript се използват методи за задаване, за да се променят стойностите на обект. Например,
const student = ( firstName: 'Monica', //accessor property(setter) set changeName(newName) ( this.firstName = newName; ) ); console.log(student.firstName); // Monica // change(set) object property using a setter student.changeName = 'Sarah'; console.log(student.firstName); // Sarah
В горния пример методът на задаване се използва за промяна на стойността на обект.
set changeName(newName) ( this.firstName = newName; )
Забележка: За да създадете метод за задаване, set
се използва ключовата дума.
Както е показано в горната програма, стойността на firstName
е Monica
.
След това стойността се променя на Sarah
.
student.chageName = 'Sarah';
Забележка : Setter трябва да има точно един формален параметър.
JavaScript Object.defineProperty ()
В JavaScript можете също да използвате Object.defineProperty()
метод за добавяне на гетери и сетери. Например,
const student = ( firstName: 'Monica' ) // getting property Object.defineProperty(student, "getName", ( get : function () ( return this.firstName; ) )); // setting property Object.defineProperty(student, "changeName", ( set : function (value) ( this.firstName = value; ) )); console.log(student.firstName); // Monica // changing the property value student.changeName = 'Sarah'; console.log(student.firstName); // Sarah
В горния пример Object.defineProperty()
се използва за достъп и промяна на свойството на обект.
Синтаксисът за използване Object.defineProperty()
е:
Object.defineProperty(obj, prop, descriptor)
В Object.defineProperty()
метод отнема три аргумента.
- Първият аргумент е objectName.
- Вторият аргумент е името на имота.
- Третият аргумент е обект, който описва свойството.