знач так. у массивов в js есть много полезных функций, которые вызываются на самих массивах типа someArray.forEach,
someArray.map итд. у строк например тоже так же myStrimg.includes и все такое
у объектов же нотация через точку идентична получению ключа, то есть myObject.something === myObject['something']
поэтому когда возникла необходимость добавить полезных функций в объект, пришлось делать их статическим, например Object.keys(myObject)
это ведёт к тому, что родными методами js очень неудобно чейнить преобразования данных, если в деле участвуют объекты
Object.fromEntries(
Object.entries(myObject)
.map(([key, value]) => [key, value.toLowerCase()])
)
)
это вот аналог obj.transform_values(&:downcase) в руби
но самое ужасное, что если написать в js свой transformValues, вызывать его придется как Object.transformValues(myObj)
можно конечно упороться по FP и использовать функциональные библиотеки, полностью отказавшись от стандартной библиотеки даже для массивов
compose(
filter((v) => v > 0),
map((v) => v + 2),
[-5, -4, -3, -2, -1, 0]
) // на выходе получаем [1, 2]
и это будет работать одинаково круто для массивов, объектов и всего остального, но это не для всех
а вот если бы изначально не закладывались на то что можно ключи через точку брать - было бы все гораздо проще