2010-09-26 57 views
88

Tôi thấy rằng trong các plugin và mã khác nhau, nhưng tôi không hiểu chức năng đó ... Trong api jQuery không được tham chiếu!Chức năng jQuery .apply là gì?

+20

Nó không có trong tài liệu tham khảo jQuery, vì nó là [** hàm Javascript gốc **] (https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Function/apply). –

Trả lời

119

apply gọi hàm bằng một bộ đối số. Nó không phải là một phần của jQuery, nó là một phần của Javascript cốt lõi. Tuy nhiên, có đề cập đến nó trong các tài liệu jQuery:

http://docs.jquery.com/Types#Context.2C_Call_and_Apply

Cú pháp:

somefunction.apply(thisObj, [argsArray]) 

Trên đây gọi hàm somefunction, thiết this để thisObj trong phạm vi của chức năng, và đi qua trong đối số từ argsArray làm đối số cho hàm.

+2

Có liên quan là hàm [**. Call() **] (http://mdn.beonex.com/en/Core_JavaScript_1.5_Reference/Global_Objects/Function/call) cũng có một 'this', nhưng nó được theo sau bởi một loạt các đối số được liệt kê riêng lẻ thay vì một mảng chứa các đối số. –

+0

điều gì sẽ làm dưới đây? $ .when.apply (null, đối tượng) .done (gọi lại); – user1531437

+0

@ user1531437 Gọi đó là '$ .when (object) .done (gọi lại);', nhưng trong hàm '$ .when',' this' được đặt thành tham số đầu tiên, tức là 'null'. Có thể cho rằng, người ta nên sử dụng '$ .when.call (null, object) .done (gọi lại);' vì tham số thứ hai của '.apply' được cho là một mảng –

5

Về cơ bản, áp dụng sẽ gọi hàm có ngữ cảnh được đặt thành đối tượng bạn áp dụng hàm. Điều này có nghĩa là trong hàm, tham chiếu this sẽ tham chiếu đến đối tượng đó.

+0

Đối với bất kỳ ai làm việc với jQuery và đến câu trả lời này, bạn sẽ cần sử dụng '$ (this)' để lấy đối tượng jQuery được liên kết và có quyền truy cập vào các phương thức jQuery. –

+0

@ R.Schreurs cũng bạn cần sử dụng đối tượng jQuery.fn như được thấy ở đây: http://stackoverflow.com/a/27374435/674033 – AVProgrammer

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