Một điều mà tất cả các bài kiểm tra hiệu suất thời gian chạy ở đây bỏ lỡ là một yếu tố nữa chính:
Mạng băng thông.
Caching $(this)
vào biến cục bộ nói chung sẽ giảm kích thước tập lệnh của bạn, đặc biệt khi được rút gọn (vì this
không thể giảm từ bốn ký tự).
Cân nhắc: đầu ra minified
function hello(text) {
$(this).attr();
$(this).css();
$(this).data();
$(this).click();
$(this).mouseover();
$(this).mouseleave();
$(this).html(text);
}
hello('Hello world');
Đóng trình biên dịch là
function hello(a){$(this).attr();$(this).css();$(this).data();$(this).click();$(this).mouseover();$(this).mouseleave();$(this).html(a)}hello("Hello world");
Điều này tiết kiệm 39 byte (20%). Bây giờ xem xét:
function hello(name) {
var $this = $(this);
$this.attr();
$this.css();
$this.data();
$this.click();
$this.mouseover();
$this.mouseleave();
$this.html(name);
}
hello('Hello world');
Sản lượng minified là
function hello(b){var a=$(this);a.attr();a.css();a.data();a.click();a.mouseover();a.mouseleave();a.html(b)}hello("Hello world");
Điều này tiết kiệm 74 byte (37%), gần gấp đôi tiết kiệm byte của chúng tôi. Rõ ràng, tiết kiệm trong thế giới thực trong các kịch bản lớn sẽ thấp hơn, nhưng bạn vẫn đứng để đạt được sự giảm đáng kể kích thước của kịch bản của bạn bằng bộ nhớ đệm.
Thực sự, chỉ có một nhược điểm để lưu vào bộ nhớ cache $(this)
. Bạn nhận được hiệu suất thời gian chạy tối thiểu nhưng có thể đo lường được. Quan trọng hơn, bạn có thể giảm số lượng byte di chuyển qua dây và chuyển trực tiếp thành nhiều đô la hơn vì faster page loads equal more sales.
Khi bạn xem xét theo cách đó, bạn thực sự có thể nói rằng có thể định giá đô la có giá trị để lặp lại $(this)
và không lưu vào bộ nhớ cache.
'$ (this)' rõ ràng có nghĩa là "' (this) 'đô la". – BoltClock
Bạn nên luôn nhớ cache, nhưng trong ví dụ cụ thể này, bạn thậm chí không cần phải làm điều đó. Chỉ cần tận dụng chuỗi jQuery: '$ (this) .addClass ('fooClass'). Attr ('data-bar'," bar ") .ss ('background-color', 'red');' –