Передача аргументов в функцию

Разработчик Программист JavaScript Проект месяца 3 место Проект месяца 1 место Проект месяца 2 место Учитель Оратор Ветеран Даритель Стимкея 2 место Программист Ruby Паладин
Больше
10 года 3 мес. назад #89259 от DK
Надеюсь понятно объясняю)
в функции записываю метод в переменную: this.window_method = method;
в другой функции нужно вызвать this.window_method с аргументами, переданными этой функции
function create() {
this.window = new this.method(x, y, width, height, ...); // x, y... в массиве arguments, но массив мне не нужен
};

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Программист Ruby Коммерсант Проект года 1 место Учитель Проект месяца 1 место
Больше
10 года 3 мес. назад #89265 от Iren_Rin
А apply не помогает?
Code:
this.method.apply(this, arguments);

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Разработчик Программист JavaScript Проект месяца 3 место Проект месяца 1 место Проект месяца 2 место Учитель Оратор Ветеран Даритель Стимкея 2 место Программист Ruby Паладин
Больше
10 года 3 мес. назад #89267 от DK
Так пробовал. Вылетает ошибка.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Программист Ruby Коммерсант Проект года 1 место Учитель Проект месяца 1 место
Больше
10 года 3 мес. назад #89268 от Iren_Rin

Subzeroy пишет: Так пробовал. Вылетает ошибка.

Значит ты делаешь что-то не так. Ты контекст передал первым аргументом в apply? Сохраненная функция принимает те же аргументы и в том же порядке, что и функция, из которой ты ее вызываешь?
По твоему примеру кода многого не скажешь.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Разработчик Программист JavaScript Проект месяца 3 место Проект месяца 1 место Проект месяца 2 место Учитель Оратор Ветеран Даритель Стимкея 2 место Программист Ruby Паладин
Больше
10 года 3 мес. назад #89270 от DK
this.input_window_method = DKTools_Transfer_Window_Input;

DKTools_Transfer_Window.prototype.createAllWindows = function() {
this.createInputWindow(0, 0);
};

DKTools_Transfer_Window.prototype.createInputWindow = function() {
this.input_window = this.input_window_method.apply(this, arguments); // если добавить new, то вылетает, а без него просто виснет
this.addChild(this.input_window);
};

function DKTools_Transfer_Window_Input() {
this.initialize.apply(this, arguments);
}

DKTools_Transfer_Window_Input.prototype = Object.create(Window_Command.prototype);
DKTools_Transfer_Window_Input.prototype.constructor = DKTools_Transfer_Window_Input;

DKTools_Transfer_Window_Input.prototype.initialize = function(x, y) { Window_Command.prototype.initialize.call(this, x, y);
};

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Программист Ruby Коммерсант Проект года 1 место Учитель Проект месяца 1 место
Больше
10 года 3 мес. назад #89281 от Iren_Rin
Давай ка разберем код что ты скинул
Code:
this.input_window_method = DKTools_Transfer_Window_Input;
Что тут происходит? Записываем несуществующую переменную в глобальный контекст - в window? Или в этом месте у тебя уже что-то лежит в DKTools_Transfer_Window_Input ? Если ничего нет, то плагин свалится прямо на этом месте и исполнение дальше не пойдет.
Code:
DKTools_Transfer_Window.prototype.createInputWindow = function() { this.input_window = this.input_window_method.apply(this, arguments); // если добавить new, то вылетает, а без него просто виснет this.addChild(this.input_window); };
Записывали мы функцию в глобальный контекст, а вызываем теперь из объекта класса DKTools_Transfer_Window ?
Code:
DKTools_Transfer_Window_Input.prototype.initialize = function(x, y) { Window_Command.prototype.initialize.call(this, x, y); };
А этот код ничего не делает, ты и так уже скопировал весь прототип у Window_Command, включая initialize.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Разработчик Программист JavaScript Проект месяца 3 место Проект месяца 1 место Проект месяца 2 место Учитель Оратор Ветеран Даритель Стимкея 2 место Программист Ruby Паладин
Больше
10 года 3 мес. назад #89283 от DK
this.input_window_method = DKTools_Transfer_Window_Input;
Находится в классе DKTools_Transfer_Window.
DKTools_Transfer_Window_Input.prototype.initialize = function(x, y) { Window_Command.prototype.initialize.call(this, x, y);
}; там не только это, другие функции

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Время создания страницы: 0.095 секунд
Работает на Kunena форум