Практика расширения прототипов (ianis.js)
Здравствуйте.
Сначала история - когда я начал работать с JavaScript я начал постепенно копировать набор функций с проект на проект (как, я уверен, часто случается). Поэтому я решил создать библиотеку а-ла underscore.js, но вместо того чтобы использовать объект с мистическим названием я решил добавлять методы к прототипам базовых типов (Object, Array, Function....) - благодарение Object.defineProperty это можно делать без нарушения for..in (и for..of) циклов. Проблема в том насколько удобно это будет другим? На данный момент эта библиотека нравится всем, с кем я работал по js проектам. В то же время изменять базовые типы языка может привести к неясности - откуда взялся данный метод и почему его нет в MDB. Мой вопрос - заслуживает ли продолжение эта моя хрень или лучше писать underscore mix-ins? URL библиотеки: https://github.com/v--/ianis.js |
mootools.js
prototype.js |
|
@nerv_:
Про sugarjs впервые слышу. Почти то же самое, что и мое, но лучше (хотя некоторых методов мне там не хватает). Спасибо, что просветил. |
имхо этим почти никто не пользуется и это не с проста =)
|
@MallSerg:
Причина для создания ianis.js лишь одна: Цитата:
func(object.binded('method').partial(parameter)); мне легче, чем так: func(function() { args = Array.prototype.slice.call(arguments); args.unshift(parameter); object.method.apply(object, args); }); Кроме того, String#prototype#basename() и String#prototype#dirname() делают ту же работу, что и в GNU Coreutils. Может это и стоит поставить в README, но вопрос был о другом (хотя может и не в правильной секции). EDIT: Еще [true, true, true].isMonotone(); // true [[], [], []].isTypeMonotone(); // true [1, 2, '3'].isTypeMonotone(); // false В README подробно описаны какие методы что делают. Так что - не совсем безполезная дрянь. Кроме того, предлагаю прекратить обсуждение, поскольку здесь действительно нечего обсуждать - ответ свой я получил, за что благодарен. |
Часовой пояс GMT +3, время: 00:10. |