Если вы хотите сделать это без всего oop, вы можете сделать что-то вроде этого:
function stringify(obj, raw) {
let [[k, v], ...rest] = Object.entries(obj), // Take the first entry and the rest
r = k + ": ";
// Process the first entry in the object
if (typeof v == "object") {
r += stringify(v); // recursively call for inner objects
}
else {
r += v;
}
// Process the remaining entries (if there are more)
if (rest.length) {
r += ", " + stringify(Object.fromEntries(rest), true); // recursively call for remainder of present object
}
// Wrap the string in {} if needed
if (raw) {
return r;
}
else {
return "{" + r + "}";
}
}
console.log(stringify({x: 10, y: 5, params: {a: 3, b: 4}}));
Одним недостатком является то, что для больших объектов вы можете столкнуться с проблемами максимальной глубины рекурсии. Этого можно избежать, если добавить al oop в рекурсивную функцию. Вы также должны подумать о том, как бы вы работали с массивами (игнорируется в коде выше).