Подтвердить что ты не робот

Javascript: массив аргументов устарел?

Большинство сайтов говорят, что "вызываемый" как свойство функции .arguments устарел. Но некоторые сайты идут дальше и говорят, что все функции. Аргумент устарел. http://aptana.com/reference/api/Arguments.html Почему только упоминание о вызове, если вся рутина мертва в воде? Я только что открыл "аргументы" и кажется невероятно полезным. Например: http://hungred.com/how-to/secret-arguments-array-javascript/

4b9b3361

Ответ 1

Function.arguments устарел, но он только устарел в пользу объекта vanilla arguments, доступного внутри функции. (например, используя x = arguments[i]; вместо x = theFunc.arguments[i];)

Теперь предпочтительный (и, как вы говорите, чрезвычайно полезный) метод доступа к полученным порядковым аргументам.

Ответ 3

callee устарел, но аргументы используются во многих приложениях. Я не знаю, устарели ли аргументы. Вы можете использовать его для получения всех параметров функции, даже если они не определены внутри функции (params).

В большинстве случаев, когда я разрабатывал плагин jQuery. Что-то вроде:

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

Как вы видите, только метод передается как параметр, но внутри первого, если аргументы разделяются после первого значения. Таким образом вы можете передать имя функции и все параметры, используемые этой функцией.

Полный пример: http://docs.jquery.com/Plugins/Authoring

Ответ 4

Нет, массив аргументов не устарел в последней версии спецификации 5.1 (см. стр. 60). Однако объект caller доступен только в том случае, если код не находится в строгом режиме.