<header>Check result</header>

<body>
    <script>
        function checkResult(original, validator) {
            function wrapper(...params) {
                let result = null;
                while (validator(result = original(...params)) != true);
                return result;
            }
            return wrapper;
        }


        const capitalize = str => {
            if (!str)     // проверка пустой строки
                return str;

            str = str.toLowerCase().trim();
            let result = str[0].toUpperCase() + str.slice(1);
            return result;
        }
        const credentials = () => {
            let sName = capitalize(prompt("Enter surname"));
            let name = capitalize(prompt("Enter name"));
            let fatherName = capitalize(prompt("Enter father name"));
            let fullName = sName + ' ' + name + ' ' + fatherName;
            return { name, sName, fatherName, fullName };
        }
        const respectMe = checkResult(credentials, obj => {
            let hasEmptyField = !obj.sName || !obj.fatherName || !obj.name; //проверка пустого поля
            return !hasEmptyField;
        });

        let res = respectMe();
        alert(res.name + "\n" + res.sName + "\n" + res.fatherName + "\n" + res.fullName);


    </script>
</body>