Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как создать экземпляр имея переменную arguments (https://javascript.ru/forum/misc/22732-kak-sozdat-ehkzemplyar-imeya-peremennuyu-arguments.html)

GuardCat 31.10.2011 18:59

Почему же в таком случае вам не подходит вариант с передачей массива аргументов? На мой взгляд, задачу вариант решает.

рони 31.10.2011 20:24

Вариант ....
function A() {
    for (var a = 0; a < arguments.length; a++) alert(arguments[a])
}
function B() {
    return A.apply(this, arguments)
}
B(1, 2, 3);

mexoboy 01.11.2011 11:38

Цитата:

Сообщение от рони (Сообщение 133790)
Вариант ....
function A() {
    for (var a = 0; a < arguments.length; a++) alert(arguments[a])
}
function B() {
    return A.apply(this, arguments)
}
B(1, 2, 3);

В этом случае возвращается результат выполнения функции A(1,2,3), а не экземпляр A с параметрами 1,2,3

Sweet 01.11.2011 13:50

Можно сделать, чтобы конструкторы, при вызове без аргументов возвращал this:
function A(){
  if( arguments.length === 0 )
    return this;
  this.args = Array.prototype.slice.call( arguments );
  return this;
};

function B(){
  return A.apply( new A, arguments );
};

alert( B( 1, 2, 3 ).args );
Но лучше использовать не n аргументов, а один объект с параметрами:
function A( setup ){
  this.age = setup.age;
};

function B( setup ){
  return new A( setup );
};

alert( B({ age: 25 }).age );


Часовой пояс GMT +3, время: 08:33.