2012-02-14 19 views
5

Necesito consejo.Funciones con argumentos variables en javascript/jQuery

Este es mi problema, tengo funciones "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){  
     } 
    }); 
}; 

todas estas funciones arr empujado en un objeto que es esto.

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

después de estoy esperando cuando todas las funciones de Ajax se realizan con y después de que estoy bien.

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

    }); 

mi problema está aquí:

function (a1, a2, ...an) 

Quiero tener lugar argumentos de la función un objeto porque no sé cuántos función va a ser.

Así que puedo editar el objeto de la función, que es genial $.when.apply($, fucArr), el problema es utilizar números variables de argumentos.

PD: ¿Quizás también pueda usar "apply" o "call" para estos argumentos?

¿Puede alguien darme una idea aquí. ¡¡¡Muchas gracias chicos!!!

+0

posible duplicado de [Permitir función javascript para aceptar cualquier cantidad de argumentos] (http://stackoverflow.com/questions/3583044/allowing-javascript-function-to-accept-any-number-of-arguments) y [muchos otros] (http: // stackoverflow. com/search? q = javascript + variable + número + de + argumentos). –

Respuesta

11

Se puede acceder a todos los argumentos que se pasan a un método utilizando the arguments keyword por ejemplo:

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

The apply method puede usarse para utilizar estos argumentos a otra función llamada:

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

Blimey eso es útil :) – CompanyDroneFromSector7G

Cuestiones relacionadas