Проэлектроника

Александр Церковный

Мысли, истории, новости, всё, что меня касается ...

  • Home
    Home This is where you can find all the blog posts throughout the site.
  • Categories
    Categories Displays a list of categories from this blog.
  • Tags
    Tags Displays a list of tags that has been used in the blog.
  • Bloggers
    Bloggers Search for your favorite blogger from this site.
  • Team Blogs
    Team Blogs Find your favorite team blogs here.
  • Login
Subscribe to this list via RSS Blog posts tagged in javascript

Posted by on in JavaScript

У меня часто спрашивают, "а что же это?", я тут наткнулся на очень хорошее и краткое объяснение:

Это платформа для запуска JavaScript приложений, это не сервер, это не инструмент, это просто среда.

Hits: 1099
0

Posted by on in Мысли
Как им удобно ! Всё на "русском"

Object.defineProperty
Объект.определитьСвойство

blockquote
цитата

head
голова

body
тело

document.getElementById
документ.получитьЭлементПоИдентификатору
Hits: 1002
0

 Как сделать выход из родительской функции (return), внутри вложенной функции:

var $break = {};
  
function getElement() {
  
  try {
  
    [1, 2, 3].forEach(function (element) {
  
      if (element % 2 == 0) {
        // "return" из getElement
        alert('found: ' + element); // found: 2
        $break.data = element;
        throw $break;
      }
  
    });
  
  } catch (e) {
    if (e == $break) {
      return $break.data;
    }
  }
  
  return null;
}
  
alert(getElement()); // 2

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

Обычно я использую такой путь:

var func = (function () {
    var return_value = 0;

    for (var i = 0; i < 10; i+=1) {
        (function (x) {
            var some_another_value = 0;

            return_value += some_another_value + x;
        })(i);
    }

    return return_value;
})();
 

То есть ключевая логика здесь это return_value

Он более прост в понимании и реализации, но вариант от Сошникова более изящен.

Tagged in: closure javascript scope
Hits: 912
0
'use strict';

var test = {
    aa : function () {
        var bb = {
            j : function () {
                console.log(this);
            }
        };
        
        function bar () {
            return bb.j;
        }
        
        return bar()();
    }
};

test.aa(); // this === ???

Такой вариант:

'use strict';

var test = {
    aa : function () {
        var bb = {
            j : function () {
                console.log(this);
            }
        };
        
        function bar () {
            return bb.j();
        }
        
        return bar();
    }
};

test.aa(); // this === ???

И последний

'use strict';

var test = {
    aa : function () {
        var bb = {
            j : function () {
                console.log(this);
            }
        };
        
        function bar () {
            return bb.j;
        }
        
        return bar();
    }
};

test.aa()(); // this === ???
Tagged in: javascript scope this
Hits: 3687

Хотел написать статью об ошибках, которые мы часто допускаем в процессе написания кода. Многие из которых заставляют нас копаться очень долго, что бы выяснить в чем причина, а на самом деле причина в "человеческом факторе". Все ошибаются, и мы были бы не люди, если бы не ошибались.

В основном все эти ошибки часто допускаю я при написании кода в принципе в любых условиях (спешу или нет). Хотя казалось бы, они ведь мне известны и стоит обращать внимание, но увы не всегда это выходит.

Порядок пунктов не означает частость повторения.

1) Аргументы (псевдо массив arguments у функций) в неправильном порядке:

;(function () {
	'use strict';

	function make_some_stuff (jquery, bootstrap, backbone, angular, mootools) {
		// Здесь обычно мы пишем уже обращение к аргументам в нашей функции
		// И обычно пишем не отдавая себе отчет в том, что могли перепутать аргументы при вызове функции
		// И это влечет за собой тщательную отладку
	}

	// множество кода, или лоадер необходимых нам библиотек
	// или определение этих библиотек

	make_some_stuff($, back, boot, ang, moot);
})();
Hits: 1285
0

Posted by on in JavaScript

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

О чем же я:

for (var i =1; l = arr.length; i< l; ++i){
    console.log(arr[i]);
}

или

arr.forEach(function(item){
    console.log(item);
});

что лучше?

Tagged in: abstraction javascript
Hits: 901
0

Ужасно работает логика работы с элементами после выборки их в DOM. К примеру я выбрал всех детей сделав примерно так:

$$(elem).getChildren()

после этого что бы воспользоваться каким нибудь инструментом получения информации, я ещё должен докопаться до нужного мне элемента, путём выборки через индекс в массиве или другим способом ... это самый не значительный минус.
Есть ещё такой метод как inject как бы альтернатива insertBefore/After но типа более навороченный, так вот при перемещении им что либо куда либо, затераются обработчики. Напомню, что после работы с insertBefore/After обработчики должны оставаться.

И самый ужасный минус - это то, что эта библиотека срёт в DOM своими методами, в итоге получается, что при ошибке работа скрипта останавливается. Напомню, что jQuery "съедает" все ошибки.

Ужасно построена логика фильтра ...

Нет стандартных фич типа:

:visible

Ужасно бесит, когда в официальной документации тебе пишут, что ты можешь просто дополнить библиотеку такими фильтрами ... я не хочу дополнять библиотеку, я хочу использовать её такую, как она есть!

* Дополнение:
Неявно работает выборка, в одних случаях возвращает массив, в других элемент.

** Дополнение:
Не работают некоторые стандартные методы типа erase() - метод удаления атрибута у элемента.

Итог: MooTools ужасно недоработанная библиотека.

Tagged in: javascript mootools
Hits: 1112
0
var some_data = {
	userID: '92800',
	name: 'Ivan'
}
Tagged in: code javascript
Hits: 1005
Joomla 2.5