JSFiddle - React, Tailwind, and code Playground

by Alexey Lisovy

JavaScript

/*
Итак, задача следующая. Есть произвольный объект. Если свойство начинается с _ - оно считается закрытым и защищается паролем. Свойство _password точно также защищается паролем и может быть изменено.
*/


var user =
    {
       name: 'Lex',
       age: 28,
       job: 'developer',
       _password: "access128",
       _girlfriend: 'Lipona',
       _hobby1: 'chess',
       _hobby2: 'violin',
       _hobby3: 'bicycle'
    }
 
 var user2 =
    {
       name: 'Lipona',
       _age: 30,
       _job: 'beutiful interesting girl',
       _password: 1526
    }
 function getPassAccess(object)
    {
       if ( !('_password' in object) )
          {
          	 object._password = '';
          }
       var pass = object._password;
       Object.defineProperty(object, '_password',
                {
                   get()
                      {
                         return pass;
                      },
                   set(value)
                      {
                         pass = value;
                      }
                } );
       let objectProxy = new Proxy(object,
                         {
                             get(target, prop, receiver)
                                { 
                                    if( !(prop in target) )
                                         throw new ReferenceError("Свойства не существует");
                                    if ( !prop.startsWith('_') )
                                         return Reflect.get(...arguments);
                                    else if( prompt(`введите пароль для доступа к свойству ${prop} объекта ${target.name}`) == pass )
                                         return Reflect.get(...arguments)
                                    else
                                         throw new TypeError("Ошибка доступа");
                                },
                             set(target, prop, val, receiver)
                                {
                               ...