Jun 26, 2012 10:51
Вот кто мне может сказать: почему в ECMAScript 5th Edition есть реализованный в JavaScript 1.8.5 метод Object.keys(объект), возвращающий массив ключей объекта, а метода Object.values(объект), возвращающего массив значений,- нет?
Захотелось тут лаконично, в одну строчку, записать вывод функции, возвращающей цвет в RGB-нотации в виде объекта с тремя полями,- а нужна строка вида rgb(R, G, B). Надо склеить значения методом join, но к объекту он неприменим, значит нужно получить массив…
Конечно, нетрудно доопределить Object.values(), а в данном конкретном случае я в конце концов подправил функцию, чтобы она возвращала объект со своим методом toString, так что при необходимости он автоматически преобразуется в правильную строку. Но всё равно странно. Меня охватили моральные муки: может, я что-нибудь не так делаю, если мне требуется метод, отсутствующий в стандарте,- ведь он так напрашивается, что для отказа от него должны же быть какие-то веские причины?
Кстати, ещё я не понимаю: если можно так использовать метод toString, то почему метод toNumber существует, но не работает так же. Если из объекта в каких-то контекстах нужно получать число, изволь определить метод valueOf.
javascript,
стандарты,
Web-программирование