2015-06-11 20 views
5

Tôi đã đọc tài liệu trên toArray() tại đây và thử nghiệm nó trong bảng điều khiển. Tôi không thể tìm thấy sự khác biệt giữa việc gọi số toArray() trên bộ chọn và gọi chính công cụ chọn.

Tôi nhận được kết quả giống hệt nhau cả hai cách, là một mảng các phần tử DOM khớp với công cụ chọn. Tôi thậm chí đã làm thử nghiệm khác

$("element").toArray()[0] === $("element")[0] 

Theo w3schools

Phương pháp toArray() trả về các yếu tố kết hợp bởi các jQuery chọn như một mảng.

Tuy nhiên, có vẻ như việc truy vấn chính yếu tố đó cũng chính xác như vậy. Và nó cũng dễ viết hơn rất nhiều.

Có ai biết sự khác biệt giữa hai loại này không? Nếu không, tôi không hiểu mục đích của chức năng này.

+3

'toArray' cung cấp cho bạn một mảng js thuần túy để bạn có thể gọi các phương thức javascript 'Array.prototype' trên đó. – AmmarCSE

+0

Nếu bạn đang truy cập các phần tử riêng lẻ trong mảng thì không có sự khác biệt (như thử nghiệm của riêng bạn). Đó là những gì bạn làm với các mảng chính nó (bạn gọi jQuery nhiều hơn về kết quả?) Mà vấn đề. –

+2

Hãy thử điều này và bạn sẽ ngay lập tức thấy tại sao ... '$ (" div "). ToArray(). Hide();' – Archer

Trả lời

9

Hãy ví dụ này từ the docs:

Nếu bạn làm điều gì đó như $('img').reverse(), bạn sẽ nhận được một lỗi.

Nếu bạn làm điều gì đó như $('img').toArray().reverse() bạn sẽ nhận được chuỗi các nút DOM được đảo ngược.

Điều này là do nếu bạn không thực hiện toArray() trước tiên, bạn sẽ không có tất cả các tính năng mát mẻ Array prototype methods có sẵn cho bạn.

+0

Vâng, đối với bản ghi 'typeof' trên bất kỳ mảng JavaScript nào sẽ trả về' đối tượng'. Có các đối tượng giống như Array khác, chẳng hạn như đối tượng 'arguments' được đưa ra trong bất kỳ phần tử chức năng nào. –

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