Вывести в консоль строку со всеми свойствами и их значениями (без методов)

В программе объявлен объект props, у которого задан набор свойств. Объявите функцию getValue(), которая выводит в консоль строку со всеми свойствами и их значениями (без методов). Привяжите объект props в качестве контекста функции getValue() и присвойте получившуюся функцию переменной getValue.

Пример значений переменных:

props= { 
    name: "Анатолий", 
    age: 29,
    sayHi: ()=>"привет"
}

Пример результата: Значения свойств объекта props (name: Анатолий, age: 29)

Ход моих мыслей, но не могу понять каким образом теперь вывести получившийся объект в строку

function getValue() {
  for (key in this) {
    if (typeof this[key] == 'function') {
      delete this[key];
    }
  }
  console.log(String(Object.entries(this)));
}
props.getValue = getValue.bind(props);
props.getValue();

Ответы (3 шт):

Автор решения: IwasKENNY

ЭЛЕКТРОННЫЙ КУРС Основы программирования на JavaScript II.

let s = 'Значения свойств объекта props ';
    function getValue(){
  if (Object.keys(props).length === 0) {
    s = s + '()';}
  for (let key in props) {
    if ((typeof props[key]) != "function") {
      if (s == 'Значения свойств объекта props '){
      s = s + `(${key}:`;
      s = s + ' ' + `${props[key]},`+ ' ';
      } 
      else {
      s = s + `${key}:`;
      s = s + ' ' + `${props[key]}`+ ')';
      }
        }
    
    else if (s == 'Значения свойств объекта props ()') {
      s = s;
    }   
    else if (s == 'Значения свойств объекта props '){s = s + '()';}
    

  }
  console.log(s);
}
getValue = getValue.call(props);

Решение рабочее, но проверки у них храмают. А так выводит что нужно. Первый if лютый костыль, чтобы обойти проверку пустым объектом. Если есть адекватное решение, готов выслушать.

→ Ссылка
Автор решения: Nikolai
function getValue() {
let newProps = {} 
for (let key in props) {
    if ((typeof props[key]) != 'function')        
      newProps[key] = props[key];    
}

let string = ''
for (let key in newProps) {      
    string += `${key}` + ': ' + `${newProps[key]}` + ', '
}
string = string.slice(0, -2);

let result = 'Значения свойств объекта props ' + `(${string})`;
console.log(result)
}

getValue = getValue.call(props);
→ Ссылка
Автор решения: Михаил Камахин

Советую использовать для вывода объекта без функций JSON.stringify

const props = {
  name: "Анатолий",
  age: 29,
  sayHi: () => "привет"
};

function getValue(obj) {
  return JSON.stringify(obj);
}

console.log(getValue(props));

→ Ссылка