Ответы пользователя по тегу JavaScript
  • Hover-state отдельных областей canvas

    Zitrix
    @Zitrix
    зависит от того, как Вы с ним работаете.
    1) если нарисовано неизвестно что, то у тэга есть метод .toDataURL() — получить bas64, т.е. можно сохранить то, что сейчас нарисовано в png24 и потом вернуть обратно (можно по таймеру с прозрачностью эту картинку накладывать);
    2) можно накладывать друг на друга несколько тегов canvas, если background: transparent — динамику можно показывать на нем;
    3) если есть какая-нибудь последовательность команд для «раскраски», то достаточно очистить холст и её воспроивести.
    и, судя по «два квадрата по 40 пикселов», Вам подходит третий вариант: запоминайте что и где надо выводить — и никаких проблем.
    Ответ написан
  • Один localStorage на все поддомены. Нельзя, но может всё-таки можно?

    Zitrix
    @Zitrix
    globalStorage, если бы он поддерживался хромом :(
    Ответ написан
    Комментировать
  • Синтаксис ООП в js и использование prototype

    Zitrix
    @Zitrix
    A, B, E — имеется конструктор Obj. в случае вызова функции через new — конструктор будет работать с новым объектом, в случае вызова через call/apply будет расширять заданный Вами объект. т.е. одна функция может быть и «классом» и «примесью».
    C, D — создание объекта «руками», без конструктора. в D функция вынесена и проименована — подразумевается, что её можно использовать не только как метод.
    B — используется прототипирование. прототип есть у каждого объекта*, это значит, что непримитивные типы данных (функции, массивы, даты, объекты) будут храниться только в прототипе, экономя память и время «создания» объекта, но замедляя последующую работу с объектом из-за того, что обращение к «общим» данным/методам будет происходить через (цепочку) прототипов.
    A — функция тоже является объектом, и «метод» обозначен именно у объекта функции. объект функции(-конструктора) никак не связан с изменяемыми ею объектами. объет конструктора — хорошее место для всякого хлама, который не хочется распространять на все его «экземпляры».

    пара моментов, которые следует осознать:

    function Obj() {}
    Obj.prototype.q = [1,2,3];
    var obj = new Obj();
    Obj.prototype.q[1] = 8;
    alert(obj.q +" - "+ Obj.prototype.q); // 1,8,3 - 1,8,3
    

    function Obj() {
      this.val = 5;
      this.method = function() { alert(this.val *2); };
    };
    var obj = new Obj();
    window.setTimeout(obj.method, 1); // NaN
    


    почитать:
    ru.wikipedia.org/wiki/Прототипное_программирование
    * dklab.ru/chicken/nablas/40.html — .constructor.prototype; где-то там же было объяснение необходимости ставить conctructor прототипа в «текущий» класс
    www.webreference.com/js/column26/apply.html — apply-примесь
    так же рекомендую погуглить про всякие typeof, instanceof, hasOwnProperty, isPrototypeOf, etc.

    в какой пропорции использовать прототипы, замыкания, примеси и прочие декораторы — дело исключительно Вашего стиля.
    Ответ написан
    Комментировать