Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 13.11.2014, 18:20
v-- v-- вне форума
Новичок на форуме
Отправить личное сообщение для v-- Посмотреть профиль Найти все сообщения от v--
 
Регистрация: 11.11.2014
Сообщений: 3

Практика расширения прототипов (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
Ответить с цитированием
  #2 (permalink)  
Старый 13.11.2014, 18:32
Аватар для kobezzza
Быдлокодер;)
Отправить личное сообщение для kobezzza Посмотреть профиль Найти все сообщения от kobezzza
 
Регистрация: 19.11.2010
Сообщений: 4,338

mootools.js
prototype.js
__________________
kobezzza
code monkey
Ответить с цитированием
  #3 (permalink)  
Старый 23.11.2014, 16:32
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

уже все написано

http://sugarjs.com/api
https://lodash.com/docs
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
Ответить с цитированием
  #4 (permalink)  
Старый 29.11.2014, 18:27
v-- v-- вне форума
Новичок на форуме
Отправить личное сообщение для v-- Посмотреть профиль Найти все сообщения от v--
 
Регистрация: 11.11.2014
Сообщений: 3

@nerv_:
Про sugarjs впервые слышу. Почти то же самое, что и мое, но лучше (хотя некоторых методов мне там не хватает). Спасибо, что просветил.

Последний раз редактировалось v--, 29.11.2014 в 18:49.
Ответить с цитированием
  #5 (permalink)  
Старый 29.11.2014, 18:47
Аватар для MallSerg
Профессор
Отправить личное сообщение для MallSerg Посмотреть профиль Найти все сообщения от MallSerg
 
Регистрация: 07.03.2011
Сообщений: 1,127

имхо этим почти никто не пользуется и это не с проста =)
Ответить с цитированием
  #6 (permalink)  
Старый 30.11.2014, 01:33
v-- v-- вне форума
Новичок на форуме
Отправить личное сообщение для v-- Посмотреть профиль Найти все сообщения от v--
 
Регистрация: 11.11.2014
Сообщений: 3

@MallSerg:
Причина для создания ianis.js лишь одна:
Цитата:
когда я начал работать с JavaScript я начал постепенно копировать набор функций с проект на проект
Не знаю что ты имел в виду со своим ответом (хотя и согласен, что половина методов - хрень), но подавать метод так:

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 подробно описаны какие методы что делают. Так что - не совсем безполезная дрянь.

Кроме того, предлагаю прекратить обсуждение, поскольку здесь действительно нечего обсуждать - ответ свой я получил, за что благодарен.

Последний раз редактировалось v--, 30.11.2014 в 06:30.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
С расширения в поле dima_riabets Javascript под браузер 0 26.03.2014 04:00
Расширение прототипов встроенных обьектов: хорошо или плохо? hogart Общие вопросы Javascript 51 14.08.2009 11:56