2011-07-05 33 views
6

Tôi biết rằng bạn có nghĩa vụ lưu vào bộ nhớ cache kết quả của bộ chọn nếu bạn sử dụng nó nhiều lần. Ví dụ:

var $selected = $('.some-selected-element'); 

process($selected); 
doStuff($selected); 

Nhưng có lợi ích nào khi lưu vào bộ nhớ đệm $(this) nếu được sử dụng nhiều lần không?

$('.some-selector').hover(function() { 
    if (!$(this).hasClass('some-other-class')) { 
     $(this).addClass('another-class'); 
    } 
    process($(this)); 
} 
+0

có, bạn nên - gọi hàm của bạn và trả lại kết quả nhiều lần – xandercoded

Trả lời

8

Có, có hiệu suất tăng lên, bởi vì nó ngăn jQuery phải giải thích bộ chọn của bạn.

Dưới đây là giải thích của một selector, và những gì bạn sẽ được bỏ qua. https://github.com/jquery/jquery/blob/master/src/core.js#L78-188

Về cơ bản, đây là một phần

if (selector.nodeType) { 
    this.context = this[0] = selector; 
    this.length = 1; 
    return this; 
} 
3

Có, có lợi ích hiệu suất.

Cach lưu kết quả của $(this) tránh nhiều cuộc gọi đến chức năng $() và tạo một số đối tượng jQuery khác nhau mà tất cả tham chiếu đến cùng một phần tử.

0

Hàm $() tìm nút DOM cho phần tử và áp dụng các phương thức được tạo mẫu cho các trình duyệt chưa thêm chúng khi được xác định (trình duyệt IE). Vì vậy, liên tục gọi nó sẽ thực hiện hoạt động này. Nó là tốt hơn cho hiệu suất và khả năng đọc bộ nhớ cache đầu ra của cuộc gọi hàm $() đến một biến.

+0

jQuery không thêm phương thức được tạo mẫu vào phần tử. Bạn đang nhầm lẫn với MooTools (hoặc thư viện js khác) mở rộng các đối tượng phần tử. jQuery rời khỏi phần tử bị ảnh hưởng theo nghĩa đó, thay vào đó nó xử lý các đối tượng jQuery. – Krinkle

+1

Sai lầm của tôi. Cảm ơn bạn. – matsko

0

jsperf.com là một nguồn lực lớn - và một tôi đã thực hiện để thường xuyên lui tới của cuối năm - để đánh giá hiệu suất JavaScript. Ví dụ, các thử nghiệm sau đây để đánh giá hiệu quả hoạt động của các yếu tố jQuery cache để người không cache:

http://jsperf.com/jquery-cache-vs-no-cache

Kết quả echo câu trả lời trong chủ đề này.

Các vấn đề liên quan