- Описание
- Отправленные решения
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 МБ