485. Скрытый смысл

Не решаласьСредняя

Артём экспериментирует с возможностями языка JavaScript. Ему в голову пришла идея: создать объект, который умеет скрывать свои значения. Для этого Артём хочет реализовать две функции — trigger и getter. Эти функции Артём будет добавлять в качестве методов к объекту.

При вызове метода trigger поля объекта должны становиться недоступными для прямого доступа по ключу и не должны возвращаться при использовании Object.keys. Исключением будут поля, названия которых начинаются со знака $. При повторном вызове этой функции поля объекта снова становятся доступными.

Метод getter будет возвращать значение поля по ключу, даже если все поля были скрыты с помощью метода trigger.

Ваша задача — реализовать две функции: trigger и getter. Нельзя добавлять в объект вспомогательные поля. Несколько объектов, которым мы добавили данные методы, должны работать независимо друг от друга.

Пример использования методов:

const trigger = function() { /* Your code here */ };
const getter = function(key) { /* Your code here */ };

module.exports = { trigger, getter }

const o = {
    key: 'value',
    $visible: 'hello',
    $trigger: trigger,
    $get: getter
}

o.$trigger()

console.log(o) //-> { $visible: 'hello', $trigger: [Function: trigger], $get: [Function: getter] }

console.log(o.$get('key')) //-> 'value'

Примечание

Отправлять решение следует в формате:

const trigger = function () { /* Your code here */ };
const getter = function (key) { /* Your code here */ };

module.exports = { trigger, getter }

Рекомендуемый компилятор для отправки решения — Node.js.

Playground для тестирования можно скачать по ссылке.

Ограничения

Ограничение времени

1 с

Ограничение памяти

64 МБ

Теги

JavaScript Node.js 20.14 + Chrome 125
Нужно войти, чтобы отправить решение.Войти