Оптимизация кода на jQuery. Часть I.
<script> $el.show(); </script>
<script> console.time("jquery.fn.show"); $el.show(); console.timeEnd("jquery.fn.show"); </script>
jquery.fn.show: 1.006ms
<script> console.profile(); $el.show(); console.profileEnd(); </script>
0.993ms
, 12 calls11 calls
var display = jQuery._data( elem, "olddisplay" ); if ( elem.style.display === "" && isHidden( elem ) ) { display = css_defaultDisplay(elem.nodeName); jQuery._data( elem, "olddisplay", display ); }
style="display: none"
jQuery.fn.display
jQuery.fn.display = function (value){ var i = this.length, el; value = typeof value === "string" ? value : (value ? "" : "none"); while( i-- ){ el = this[i]; el.style && (el.style.display = value); } return this; };
<script> console.profile(); $el.display(true); console.profileEnd(); </script>
0.011ms, 1 call
$el.data("name")
.$el.data("name")
— 1.089ms, 8 calls$el.data("name", "value")
— 1.103ms, 17 calls$el.data('id')
вернет 12345678901234567000
(jQuery до 1.7)
jQuery.fn.dataset = function (data, value){ // Реализация на основе dataset // и getAttribute };
$el.dataset("id"); // 0.028ms, 1 call
Помимо увелечения производительности кода, вы сокращаете кол-во вызов, уменьшая «шум» при профилировании, а так же при запуске debugger.
github.com/RubaXa