Javascript-форум (https://javascript.ru/forum/)
-   Оффтопик (https://javascript.ru/forum/offtopic/)
-   -   Обсуждений тред (https://javascript.ru/forum/offtopic/47364-obsuzhdenijj-tred.html)

Erolast 26.03.2015 15:21

Цитата:

Так вот подумал, а почему бы не перейти на такой подход в JS, т.е. полностью отказаться от var и использовать let для изменяемых переменных, а const для неизменяемых.
А разве var deprecated не объявили? Лично я так и пишу)

kobezzza 26.03.2015 15:35

Цитата:

Сообщение от Erolast (Сообщение 363324)
А разве var deprecated не объявили? Лично я так и пишу)

Я ща использую для декларации глобальных переменных, но думаю отказаться вовсе.

Erolast 26.03.2015 17:46

Можно, кстати, еще и от for in отказаться:
let numbers = {
    one: 1,
    two: 2,
    three: 3
}

for (let numberName of Object.keys(numbers)) {
    //no need for Object.hasOwnProperty
    console.log(numberName);
}

cyber 27.03.2015 16:41

Zend, забил болт, сказал пусть сами делают свой медиа стриминг, я до пишу плеер и умываю руки)

melky 28.03.2015 13:43

Цитата:

Сообщение от cyber (Сообщение 363597)
Zend, забил болт, сказал пусть сами делают свой медиа стриминг, я до пишу плеер и умываю руки)

Dominating :D

cyber 28.03.2015 19:51

melky, всетаки решил проблему, настроил https://wmspanel.com/nimble/demo и забыл)

cyber 29.03.2015 01:05

Кто уже пробывал https://facebook.github.io/react-native/ ?
Что с производительностью?

Safort 29.03.2015 01:18

cyber,
так оно же пока только для яблоидов, не?

cyber 29.03.2015 01:36

Safort, как я понял, да.

newuser1001 29.03.2015 06:56

Цитата:

Сообщение от Erolast
Можно, кстати, еще и от for in отказаться:

lol
numbers = {
    one: 1,
    two: 2,
    three: 3
}

myNumbers=Object.create(numbers)
myNumbers.four=4
 
for(numberName of Object.keys(myNumbers)) {
    console.log(numberName);
}

// four


А вот твое говно, как раз, не нужно.
numbers = {
    one: 1,
    two: 2,
    three: 3
}

forIn=function(o, clb){
 for(var i in o) {if(!o.hasOwnProperty(i)) return; clb(o[i])}
}

forIn(numbers, function(x){console.log(x)})

Gozar 29.03.2015 10:44

newuser1001,
Оба пригодятся. Плохо, когда не добавляют новые конструкции и приходиться пилить свои 100 велосипедов.

newuser1001 29.03.2015 21:21

Gozar,
Да не, чистый язык всяко лучше. жаба нам как бы намекает на это.

Gozar 29.03.2015 22:50

Цитата:

Сообщение от newuser1001
чистый язык всяко лучше

В больших проектах не бывает лучше, только в маленьких. В больших - бывает меньшее зло. Маленькие меня не интересуют, т.к. в них можно jq-srat

cyber 30.03.2015 10:46

Кто сталкивался с проблемой что видео не рисуется на canvas на мобильных платформах?
ДЕмка не много кривая http://151.248.122.145/player/infinityplayer.html (нужно тыкнуть на квадрат когда видео появится :))
рисование выглядит как то так.
ctx.drawImage( video, 0, 0 );

Erolast 30.03.2015 10:52

Цитата:

Да не, чистый язык всяко лучше.
Лучше тот язык, с помощью которого можно проще всего решить поставленную задачу (касательно этой задачи, разумеется).

nerv_ 30.03.2015 11:25

Цитата:

Сообщение от Erolast
Можно, кстати, еще и от for in отказаться:

уже :)

---

Сейчас собираю мини "библиотеку" под свои нужды (не для DOM), чтобы не зависеть от синтаксиса и реализации подключенных фреймворков и библиотек:
angular.forEach(iterable, function(value, key){});
jQuery.each(iterable, function(key, value){});
// я решил юзать for(let {node, key} of new Iterator(iterable)) {/* code here*/} вместо forEach
angular.extend();
jQuery.extend();
//
angular.copy();

и т.п. Плюс необходимые мне базовые классы, которые использую практически в каждом приложении.
Как оно именно называться будет, еще не решил (да и это не важно). За пару часов вчерашнего дня успел собрать это.
Тащу по кускам из проектов) На es6 + modules выглядит оч. круто/лаконично =)

Хочу юзать примерно так:
var iterator = new __.Iterator(iterable); // где __ - мой namespace

Gozar 30.03.2015 11:35

Цитата:

Сообщение от nerv_
где __ - мой namespace

Назови её nerv и не парься.

kobezzza 30.03.2015 11:54

А я стал юзать абстрактные ссылки и мир стал краше :)

[]::forEach
{}::forEach
new Map()::forEach


И т.д.

В качестве бекэнда Collection разумеется :)

newuser1001 30.03.2015 12:21

Цитата:

Сообщение от kobezzza
[]::forEach
{}::forEach
new Map()::forEach

Это что означает?

kobezzza 30.03.2015 12:28

Цитата:

Сообщение от newuser1001 (Сообщение 363904)
Это что означает?

В ES7 добавили. Это аналог оператора точки, только работает справа-налево, т.е. не экземпляр должен иметь такой метод, а сам метод подстраивается под рабочий объект, но при этом нам не надо добавлять его в prototype.

newuser1001 30.03.2015 13:04

Цитата:

Сообщение от kobezzza
Это аналог оператора точки, только работает справа-налево, т.е. не экземпляр должен иметь такой метод, а сам метод подстраивается под рабочий объект, но при этом нам не надо добавлять его в prototype.

то есть, аналог
[].forEach.call

?

kobezzza 30.03.2015 13:12

Цитата:

Сообщение от newuser1001 (Сообщение 363912)
то есть, аналог
[].forEach.call

?

Да.

newuser1001 30.03.2015 13:29

Цитата:

Сообщение от kobezzza
Да.

Почему бы гребаным комитетчикам не запилить, наконец хоть что-нибудь полезное? Все, на что они способны -- заменить "устаревшее" foo bar на хипстерское кульное bar foo, Уау! Или тогда бы уж не позорились, оставили бы язык в покое.

nerv_ 30.03.2015 16:16

Цитата:

Сообщение от kobezzza
А я стал юзать абстрактные ссылки и мир стал краше

круто)

Я думал на предмет
Цитата:

написать forEach() и юзать в проектах
(как это делается в жуквери, ангуляре и т.п.), но отказался от этого в пользу цикла потому, что:
1. нет надобности создавать функцию и думать о передаче контекста (this)
2. есть родные continue, break

Это мое мнение, никого не склоняю на свою сторону :)

---
Отступление.

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

Цитата:

Сообщение от Gozar
Назови её nerv и не парься.

уже занято :D мной) А если серьезно, то:
1. хотелось бы что-то более осмысленное
2. с другой стороны, не важно, как она будет называется, т.к. эта строка решает все
import * from 'path';
// or
import {Iterator} from 'path';

а если импорта не будет и библиотека будет подключена самостоятельно, деструктуризация мне в руки:
const {Iterator, extend} = __;
// usage
let object = extend({a:1}, {b:2}, {c:3});

:)

kobezzza 30.03.2015 16:25

Цитата:

нет надобности создавать функцию и думать о передаче контекста (this)
Arrow function - легко пишется, а контекст берется родительский.

newuser1001 30.03.2015 16:37

Цитата:

Сообщение от kobezzza
берется родительский.

Ты хотел сказать лексический? Ничего хорошего в этом нет. Это для быдла, которое ниасилило динамику.

nerv_ 30.03.2015 16:39

Цитата:

Сообщение от kobezzza
Arrow function - легко пишется, а контекст берется родительский

знаю :)

Но, лично мне хотелось бы видеть цикл (та же подсветка синтаксиса, читабельность), кроме того
Цитата:

Сообщение от nerv_
2. есть родные continue, break

+ возможно, переход на метку (на знаю зачем он и работает ли, не проверял), но вдруг кому-то потребуется)
+ я могу сделать return в любой момент из цикла (или двух вложенных циклов, например)

forEach не возвращает ничего
alert([1].forEach(function(){}));

т.е. для ФП он не годится. Если мне нужно ФП, я воспользуюсь collection)

Цитата:

Сообщение от nerv_
Это мое мнение, никого не склоняю на свою сторону

:)

Gozar 30.03.2015 17:15

Цитата:

Сообщение от nerv_
хотелось бы что-то более осмысленное

Зачем? А так ты всегда будешь понимать кто тут нагадил :)

А ещё можно __yes

__yes.myFirstTime;


или

wow.method()

Максимка 30.03.2015 17:46

nerv_, если миассв изменится во время итерации твой цикл сломается, а forEach гарантировано пробежится по всем элементам. это к слову ведь вы ж нубы не знаете разницы (все кроме kobezzza конечно, этот чел делом заслужил мое уважение)

nerv_ 30.03.2015 18:19

Цитата:

Сообщение от Максимка
nerv_, если миассв изменится во время итерации твой цикл сломается, а forEach гарантировано пробежится по всем элементам. это к слову ведь вы ж нубы не знаете разницы (все кроме kobezzza конечно, этот чел делом заслужил мое уважение)

Ты не бойся, это гусь, я и сам его боюсь

p.s.: добавил еще минус тебе в карму :)

Gozar 30.03.2015 18:42

Цитата:

Сообщение от Максимка
если миассв изменится во время итерации твой цикл сломается

Если да кабы... Мартышка марш в карман.

Safort 30.03.2015 23:20

Frontflip Podcast: Flux, code hot reload и чтение правильных книг в детстве. Даня Абрамов

Zend 31.03.2015 12:39

Цитата:

Сообщение от Максимка
если миассв изменится во время итерации твой цикл сломается

Ты чего куришь? В JS нет потоков. Как твой массив изменится во время итерации?

Safort 31.03.2015 14:33

Zend,
легко)
for (let i = 0; i < arr.length; i++) {
//изменяем итерируемый массив arr.
}

nerv_ 31.03.2015 14:49

<script src=http://nervgh.github.io/js/recursive-iterator.min.js></script>
<script>
var object = {a:true, b:NaN};
var iterator = new RecursiveIterator(object);

object = null;

console.log('0=', object);
  
setTimeout(function() {
  	console.log('1=', iterator.next().value);
}, 1000);

setTimeout(function() {
    console.log('2=', iterator.next().value);
}, 2000);

setTimeout(function() {
    console.log('3=', iterator.next().value);
}, 3000);
</script>


Кстати, мою статью на хабре про итератор зарезали. Видимо, у них в модерации Максимусы сидят :)

МаксимкаНевозбанный 31.03.2015 15:06

Цитата:

Сообщение от Zend
Ты чего куришь? В JS нет потоков. Как твой массив изменится во время итерации?

Опят глупые люди не могут осознать все могущество моего разума. И когда батя говорит им правильные вещи, муравьишки не в состоянии осознать всей мудности папиных слов ^^


Ничему вы так и не научились, обычные люди.


Например если есть массив хандлеров события, и мы побегаемся в цикле и выполняем их, а в одном их хендлеров есть отписка от события. Например this.off(handler) что изменит массив во время пробегания по нему, и не все хендлеры вызовутся. ПО этому надо либо слайсить массив перед итерацией либо использовать итератор forEach


Эх детишки, вот учишь вас учишь и ни какой благодарности) одна зависть моему уму и способностям ^^ но я привык, стадо всегда ставило гениям палки в колеса :D

МаксимкаНевозбанный 31.03.2015 15:07

Цитата:

Сообщение от nerv_
Видимо, у них в модерации Максимусы сидят

Я же наоборот ЗА итераторы) где твоя логика, дурачек? :p

впрочем не удивительно, я же говорю тут 2-3 человека умных включая меня, остальные даже программировать то толком не умеют не то что логически мыслить

Zend 31.03.2015 15:49

Safort,
Это называется - пилить сук на котором сидишь. Ни разу не видел где бы такой приём понадобился.

Safort 31.03.2015 16:10

Zend,
это не важно, я просто ответил на твой вопрос)
Цитата:

Как твой массив изменится во время итерации?

МаксимкаНевозбанный 31.03.2015 18:24

Цитата:

Сообщение от Zend
Ни разу не видел где бы такой приём понадобился.

я тебе выше пример привел). конечно ты не видел, у тебя ведь маленький опыт в программировании ^^ по этому я им с вами и делюсь обычные люди


Часовой пояс GMT +3, время: 17:36.