Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 21.10.2017, 01:28
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 2,795

Объявлять метод внутри конструктора - плохая практика.

function Car() {
	//...
}

Car.prototype.honk = function() {
	console.log('Би-бип');
};

var myCars = [];

for (var i = 0; i < 10; i++) {
	myCars.push(new Car);
}


myCars.forEach(function(car) {
	car.honk();
});
Ответить с цитированием
  #12 (permalink)  
Старый 21.10.2017, 02:02
Аватар для Poznakomlus
Профессор
Отправить личное сообщение для Poznakomlus Посмотреть профиль Найти все сообщения от Poznakomlus
 
Регистрация: 13.03.2013
Сообщений: 1,194

Сообщение от Alexandroppolus
в прототипы стандартных объектов можно добавлять только полифилы.
Плевать на это дело.
Когда то писали что стили надо в header только подключать
Теперь фреймворки их налету подгружают динамически
Если есть возможность расширить стандартный прототип и это не отразится в дальнейшем, то все ваши стереотипы в задницу
И не надо говорить, что это вчерашний день, про решения которые работают и успешно справляются с своими задачами

Последний раз редактировалось Poznakomlus, 21.10.2017 в 02:11.
Ответить с цитированием
  #13 (permalink)  
Старый 21.10.2017, 04:57
Профессор
Отправить личное сообщение для Alexandroppolus Посмотреть профиль Найти все сообщения от Alexandroppolus
 
Регистрация: 25.10.2016
Сообщений: 285

Сообщение от Poznakomlus
Когда то писали что стили надо в header только подключать
Теперь фреймворки их налету подгружают динамически
Ну и что? Добавляют ведь всё равно в head.

Сообщение от Poznakomlus
Если есть возможность расширить стандартный прототип и это не отразится в дальнейшем
А если отразится? Тогда что?
Прототип стандартного объекта - это глобальная область, такая же как window. Думаю, не надо объяснять, почему не следует раскидывать по глобальной области своё барахлишко. К тому же с каждым новым стандартом es в этих прототипах куча всего добавляется.
Ответить с цитированием
  #14 (permalink)  
Старый 21.10.2017, 14:34
Аватар для Poznakomlus
Профессор
Отправить личное сообщение для Poznakomlus Посмотреть профиль Найти все сообщения от Poznakomlus
 
Регистрация: 13.03.2013
Сообщений: 1,194

Сообщение от Alexandroppolus
Добавляют ведь всё равно в head.
нет разницы, можете в body вставлять, динамически включенные скрипты подгружаются асинхронно без блокировки основного потока

Сообщение от Alexandroppolus
А если отразится
Значит вы не контролируете процесс
И если говнокодите, то разницы нет с глобал или без
С ним также стоит уметь работать для этого есть и модули и неймспейсы которые экспортируют в него же.
Небольшой пример с forEach, 2 строки
<div></div>
<div></div>
<div></div>
<script>
HTMLCollection.prototype.forEach = NodeList.prototype.forEach = Array.prototype.forEach;
document.querySelectorAll('div').forEach((el, i) => el.insertAdjacentHTML('afterbegin', ++i));
</script>
Ответить с цитированием
  #15 (permalink)  
Старый 21.10.2017, 21:41
Профессор
Отправить личное сообщение для Alexandroppolus Посмотреть профиль Найти все сообщения от Alexandroppolus
 
Регистрация: 25.10.2016
Сообщений: 285

Сообщение от Poznakomlus
нет разницы, можете в body вставлять, динамически включенные скрипты подгружаются асинхронно без блокировки основного потока
так скрипты или стили? стили раньше можно было только в head втыкать, иначе они не подхватывались. А скрипты всегда работали и в боди.

Сообщение от Poznakomlus
Небольшой пример с forEach, 2 строк
пример, безусловно, интересный. Только бесполезный. В NodeList.prototype и так есть forEach. В старых браузерах нет, вот и получается полифил.
В следующий раз, замышляя потрясти оппонента эффектным примером, извольте для начала в справочник заглянуть. А то ведь может оказаться, что метод с таким названием в прототипе уже есть, только работает чуть по другому )

Последний раз редактировалось Alexandroppolus, 21.10.2017 в 21:45.
Ответить с цитированием
  #16 (permalink)  
Старый 22.10.2017, 02:39
Аватар для Poznakomlus
Профессор
Отправить личное сообщение для Poznakomlus Посмотреть профиль Найти все сообщения от Poznakomlus
 
Регистрация: 13.03.2013
Сообщений: 1,194

Сообщение от Alexandroppolus
В старых браузерах нет
нет его реализация не во всех браузерах до сих пор
https://developer.mozilla.org/en-US/...deList/forEach
Сообщение от Alexandroppolus
отрясти оппонента эффектным примером
под столом катаюсь , написал, что попалось под руку
Сообщение от Alexandroppolus Посмотреть сообщение
А то ведь может оказаться, что метод с таким названием в прототипе уже есть, только работает чуть по другому )
Кто первый того и тапочки, если мне нужна реализация и она работает
Ответить с цитированием
  #17 (permalink)  
Старый 22.10.2017, 02:51
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 2,795

Не вижу ничего плохого в расширении прототипов. Сам так делаю и не парюсь, зато удобно. А если опасаетесь, что в будущем могут быть какие-то проблемы из-за того, что названия новых методов будут совпадать с вашими, то никто Вам не мешает называть свои методы с каким-нибудь префиксом (типа $forEach, _forEach, flyForEach), так как вряд ли методы нативной реализации будут с подобными префиксами.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
перебор массива объектов phoenix200689 Общие вопросы Javascript 5 27.07.2017 10:42
Перебор объектов DivMan Общие вопросы Javascript 15 07.09.2016 11:12
Перебор объектов и вывод значений SeeJ jQuery 6 01.12.2015 10:27
Перебор массива объектов Триви jQuery 12 26.08.2011 09:22
ООП: как создавать наследника от встроенных объектов? Langalier Общие вопросы Javascript 17 02.02.2009 17:07