2012-02-14 44 views
5

Tôi cần và tư vấn.Chức năng với các đối số biến trong javascript/jQuery

Đây là vấn đề của tôi, tôi có chức năng "N".

var FirstOne = function(){ 
    return $.ajax({ 
     type: "POST", 
     url: hrefUrl, 
     data: JSON2.stringify(option), 
     contentType: "application/json; charset=utf-8", 
     dataType: "json",   
     error: function(status){ 
     }, 
     success: function(data){  
     } 
    }); 
}; 

var SecondOne = function(){ 

    return $.ajax({ 
     type: "POST", 
     url: hrefUrl, 
     data: JSON2.stringify(option2), 
     contentType: "application/json; charset=utf-8", 
     dataType: "json",   
     error: function(status){ 
     }, 
     success: function(data){  
     } 
    }); 
}; 


............. 


var NOne = function(){ 

    return $.ajax({ 
     type: "POST", 
     url: hrefUrl, 
     data: JSON2.stringify(optionn), 
     contentType: "application/json; charset=utf-8", 
     dataType: "json",   
     error: function(status){ 
     }, 
     success: function(data){  
     } 
    }); 
}; 

tất cả các chức năng này được đẩy vào đối tượng.

var funcObject= [FirstOne(), SecondOne(), ....... NOne() ]; 

sau khi tôi đợi khi tất cả các hàm Ajax được thực hiện và sau khi tôi ổn.

$.when.apply($, funcObject).done(function (a1, a2, ...an) { 
//  ..... here already doesn't matter 

    }); 

vấn đề của tôi là ở đây:

function (a1, a2, ...an) 

Tôi muốn có thay đối số chức năng một đối tượng bởi vì tôi không biết có bao nhiêu chức năng sẽ là.

Vì vậy, tôi có thể chỉnh sửa đối tượng chức năng, đó là mát mẻ $.when.apply($, fucArr), vấn đề là sử dụng số lượng đối số biến.

PS: Có thể tôi cũng có thể sử dụng "áp dụng" hoặc "gọi" cho các đối số này?

Ai đó có thể cho tôi ý tưởng ở đây. Cám ơn mấy đứa nhiều!!!

+0

thể trùng lặp của [Cho phép chức năng javascript để chấp nhận bất kỳ số lượng đối số nào] (http://stackoverflow.com/questions/3583044/allowing-javascript-function-to-accept-any-number-of-arguments) và [nhiều người khác] (http: // stackoverflow. com/search? q = javascript + biến + số + của + đối số). –

Trả lời

11

Bạn có thể truy cập vào tất cả các đối số được truyền đến một phương pháp sử dụng the arguments keyword ví dụ:

function() { 
    Console.log(arguments); //arguments is an array 
} 

The apply method có thể được sử dụng để sử dụng những lập luận này trong một cuộc gọi chức năng:

function() { 
    someFunction.apply(this, arguments); 
} 
+1

Blimey hữu ích :) – CompanyDroneFromSector7G

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