2012-12-17 28 views
6

Tôi thường sử dụng $(this) bên trong trình xử lý sự kiện jQuery và không bao giờ lưu nó. Nếu tôi sẽ làm

var $this = $(this); 

và sẽ sử dụng biến thay cho hàm tạo, mã của tôi sẽ nhận được hiệu suất bổ sung đáng kể?


JS Perf thử nghiệm để đo đạt được hiệu suất tối ưu hóa từ này: http://jsperf.com/jquery-this-caching

+0

Điều đó tùy thuộc vào tần suất sử dụng. '$ (this)' xây dựng một đối tượng jQuery mới và mọi thứ đi kèm với nó. Nói chung nếu bạn định sử dụng '$ (this)' nhiều hơn một lần trong một khối mã, bạn nên lưu nó lại. Đặc biệt là nếu bạn đang làm nó trong một vòng lặp. – Shmiddty

+1

Sẽ luôn nhanh hơn để nhớ cache '$ (this)' trong var. Đó là tối ưu hóa vi mô để chắc chắn. Bạn chắc chắn cần phải lưu vào bộ nhớ đệm bất kỳ bộ chọn nào, bởi vì nó có ý nghĩa lớn hơn nhiều. –

+0

Nếu bạn đánh giá nó 100 lần trong cùng một ngăn xếp cuộc gọi, bạn có thể nhận được thực thi chậm hơn 1 hoặc 2 phần nghìn giây. –

Trả lời

9

Một teeny nhỏ rất nhỏ không thể nhận thấy một, vâng. Có ý nghĩa? Số

Mỗi khi bạn làm $(this), nó sẽ dẫn đến một số cuộc gọi chức năng và một vài phân bổ bộ nhớ. Các cuộc gọi chức năng không phải là ở đây cũng không có (ngay cả trên IE6, tôi là surprised to learn), nhưng bộ nhớ khuấy có thể thêm lên trên các trình duyệt mà không xử lý quản lý bộ nhớ rất tốt. Hầu hết những người hiện đại đều làm.

Tôi luôn lưu kết quả vào một biến, vì tôi không thích các chức năng gọi và phân bổ các đối tượng một cách không cần thiết. Và nó giúp tiết kiệm gõ những parens. :-)

+2

Tôi chỉ áp dụng cùng quy tắc tôi thực hiện trong tất cả các chương trình khác của mình. Nếu tôi gọi cùng một chức năng nhiều lần trong một hàm, tôi sẽ lưu lại kết quả để không phải gọi nó nhiều hơn một lần. '$()' là một hàm gọi. Được sử dụng như là một hướng dẫn trong 30 năm. – jfriend00

+0

@ jfriend00: Vâng, tôi cũng vậy (và một khoảng thời gian tương tự đáng ngạc nhiên ...). –

3

Có, bởi vì mọi lúc bạn làm $(this) bạn tạo đối tượng jquery mới.
Nhưng bạn sẽ không nhận được hiệu suất đáng kể, chỉ khi bạn làm điều đó hơn 1000x

Và thực tiễn tốt là lưu vào bộ nhớ cache các đối tượng được sử dụng nhiều lần.

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