Link Search Menu Expand Document

Инкапсуляция

Отделение и сокрытие от внешнего мира внутренностей программы.

Пример инкапсуляции на функциях

'use strict';
function User(name, age) {
    this.name = name;
    let userAge = age;
    this.say = function () {
        console.log(`Имя пользоватлея: ${this.name}, возраст ${userAge}`);
    };
    this.getAge = function () {
        return userAge;
    };
    this.setAge = function (age) {
        if (typeof age === 'number' && age > 0 && age < 110) {
            userAge = age;
        } else {
            console.log('Недопустимое значение');
        }
    };
}
const ivan = new User('Ivan', 25);
console.log(ivan.name);
console.log(ivan.getAge());
ivan.setAge(30);
ivan.setAge(300);
console.log(ivan.getAge());
ivan.say();

Пример инкапсуляции на классах

class User {
    constructor(name, age) {
        this.name = name;
        this._age = age;
    }
    say() {
        console.log(`Имя пользоватлея: ${this.name}, возраст ${this._age}`);
    }
    get age() {
        return this._age;
    }
    set age(age) {
        if (typeof age === 'number' && age > 0 && age < 110) {
            this._age = age;
        } else {
            console.log('Недопустимое значение');
        }
    }
}
const ivan = new User('Ivan', 27);
console.log(ivan.age);
ivan.age = 199;
console.log(ivan.age);
ivan.say();