2011-11-14 13 views
28

La mayoría de los sitios dicen que "callee" como una propiedad de Function.arguments está en desuso. Pero algunos sitios van más allá y dicen que todo Functions.argument está obsoleto. http://aptana.com/reference/api/Arguments.html ¿Por qué solo mencionar a alguien si toda la rutina está muerta en el agua? Sólo acabo de descubrir "argumentos" y parece increíblemente útil por ejemplo: http://hungred.com/how-to/secret-arguments-array-javascript/Javascript: ¿está desaprobada la matriz de argumentos?

Respuesta

44

Function.arguments es obsoleta, pero que sólo ha de utilizar para sustituirla del arguments objeto de vainilla que está disponible dentro de una función. (Por ejemplo, usando x = arguments[i]; en lugar de x = theFunc.arguments[i];)

Ese es ahora el método preferido (y como usted dirá, extremadamente útil) para acceder a los argumentos ordinales recibidos.

+0

¡Ah, eso lo explica! Muchas gracias. –

+0

Esto tiene sentido. Si Javascript alguna vez quiere soporte multihilo, tales objetos con estado global están matando. –

+0

¿Por qué '' Function.arguments' está en desuso? Le permite acceder directamente a los argumentos de una función primaria dentro de una función anidada, esto es algo que no puede hacer con el objeto 'arguments'. – Taurus

1

llamada está en desuso, pero los argumentos se usan en muchas aplicaciones. No sé si los argumentos están en desuso. Puede usarlo para obtener todos los parámetros de una función, incluso si no está definida dentro de la función (params).

La mayoría de las veces que uso cuando desarrollo un plugin jQuery. Algo así como:

$.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'); 
    }  
    }; 

Como se puede ver único método se pasa como un parámetro, pero dentro de la primera si los argumentos se divide después de que el primer valor. De esta forma, puede pasar un nombre de función y todos los parámetros utilizados por esta función.

ejemplo completo: http://docs.jquery.com/Plugins/Authoring

1

n, la matriz de argumentos no está en desuso en la versión más reciente 5.1 de la especificación (véase la página 60). Sin embargo, el objeto caller solo estará disponible si el código no está en modo estricto.

Cuestiones relacionadas