2011-11-14 12 views
28

Molti siti dicono "callee" come proprietà di Function.arguments è deprecato. Ma alcuni siti vanno oltre e affermano che l'intero Funzioni.argumento è deprecato. http://aptana.com/reference/api/Arguments.html Perché menzionare solo il callee se l'intera routine è morta nell'acqua? Ho appena scoperto "argomenti" e sembra incredibilmente utile per esempio: http://hungred.com/how-to/secret-arguments-array-javascript/Javascript: la matrice degli argomenti è deprecata?

risposta

44

Function.argumentsè deprecato, ma è deprecato solo a favore della arguments oggetto di vaniglia che è disponibile all'interno di una funzione. (ad esempio, utilizzando x = arguments[i]; anziché x = theFunc.arguments[i];)

Questo è ora il metodo preferito (e come dici tu, estremamente utile) per accedere agli argomenti ordinali ricevuti.

+0

Ah, questo lo spiega! Grazie molto. –

+0

Questo ha senso. Se Javascript vuole mai un supporto multi-threading, tali oggetti stateful globali stanno uccidendo. –

+0

Tuttavia, perché 'Function.arguments' è deprecato? Permette di accedere direttamente agli argomenti di una funzione genitore all'interno di una funzione nidificata, questo è qualcosa che non si può fare con l'oggetto 'arguments'. – Taurus

1

callee è deprecato, ma gli argomenti vengono utilizzati in molte applicazioni. Non so se gli argomenti sono deprecati. Puoi usarlo per ottenere tutti i parametri di una funzione, anche se non sono definiti all'interno della funzione (parametri).

Il più delle volte che ho usato quando sviluppo un plugin jQuery. Qualcosa di simile:

$.fn.tooltip = function(method) { 
    if (methods[method]) { 
     return methods[method].apply(this, Array.prototype.slice.call(arguments, 1)); 
    } else if (typeof method === 'object' || ! method) { 
     return methods.init.apply(this, arguments); 
    } else { 
     $.error('Method ' + method + ' does not exist on jQuery.tooltip'); 
    }  
    }; 

Come si può vedere solo metodo viene passata come parametro, ma entro il primo se gli argomenti è diviso dopo il primo valore. In questo modo è possibile passare un nome di funzione e tutti i parametri utilizzati da questa funzione.

esempio completa: http://docs.jquery.com/Plugins/Authoring

1

No, la matrice argomenti non è deprecato nella sua ultima versione 5.1 della specifica (vedi pagina 60). L'oggetto caller sarà tuttavia disponibile solo se il codice non è in modalità rigorosa.

Problemi correlati