Войти на сайт

Авторизация, ждите ...
×

ТЕМА: Передача аргументов в функцию

Передача аргументов в функцию 8 года 3 мес. назад #89259

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

Передача аргументов в функцию 8 года 3 мес. назад #89265

  • Iren_Rin
  • Iren_Rin аватар
  • Вне сайта
  • Мастер
  • Сообщений: 247
  • Спасибо получено: 537
  • КоммерсантПроект года 1 местоПрограммист RubyПроект месяца 1 местоУчитель
А apply не помогает?
this.method.apply(this, arguments);
Администратор запретил публиковать записи гостям.

Передача аргументов в функцию 8 года 3 мес. назад #89267

  • DK
  • DK аватар
  • Вне сайта
  • Светлый дракон
  • DKPlugins
  • Сообщений: 946
  • Спасибо получено: 1129
  • Проект месяца 2 местоРазработчикДаритель СтимкеяПрограммист RubyПрограммист JavaScript Проект месяца 1 местоУчитель2 место ПаладинПроект месяца 3 место
Так пробовал. Вылетает ошибка.
Администратор запретил публиковать записи гостям.

Передача аргументов в функцию 8 года 3 мес. назад #89268

  • Iren_Rin
  • Iren_Rin аватар
  • Вне сайта
  • Мастер
  • Сообщений: 247
  • Спасибо получено: 537
  • КоммерсантПроект года 1 местоПрограммист RubyПроект месяца 1 местоУчитель
Subzeroy пишет:
Так пробовал. Вылетает ошибка.
Значит ты делаешь что-то не так. Ты контекст передал первым аргументом в apply? Сохраненная функция принимает те же аргументы и в том же порядке, что и функция, из которой ты ее вызываешь?
По твоему примеру кода многого не скажешь.
Администратор запретил публиковать записи гостям.

Передача аргументов в функцию 8 года 3 мес. назад #89270

  • DK
  • DK аватар
  • Вне сайта
  • Светлый дракон
  • DKPlugins
  • Сообщений: 946
  • Спасибо получено: 1129
  • Проект месяца 2 местоРазработчикДаритель СтимкеяПрограммист RubyПрограммист JavaScript Проект месяца 1 местоУчитель2 место ПаладинПроект месяца 3 место
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);
};
Администратор запретил публиковать записи гостям.

Передача аргументов в функцию 8 года 3 мес. назад #89281

  • Iren_Rin
  • Iren_Rin аватар
  • Вне сайта
  • Мастер
  • Сообщений: 247
  • Спасибо получено: 537
  • КоммерсантПроект года 1 местоПрограммист RubyПроект месяца 1 местоУчитель
Давай ка разберем код что ты скинул
this.input_window_method = DKTools_Transfer_Window_Input;
Что тут происходит? Записываем несуществующую переменную в глобальный контекст - в window? Или в этом месте у тебя уже что-то лежит в DKTools_Transfer_Window_Input ? Если ничего нет, то плагин свалится прямо на этом месте и исполнение дальше не пойдет.
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 ?
DKTools_Transfer_Window_Input.prototype.initialize = function(x, y) { Window_Command.prototype.initialize.call(this, x, y);
};
А этот код ничего не делает, ты и так уже скопировал весь прототип у Window_Command, включая initialize.
Администратор запретил публиковать записи гостям.

Передача аргументов в функцию 8 года 3 мес. назад #89283

  • DK
  • DK аватар
  • Вне сайта
  • Светлый дракон
  • DKPlugins
  • Сообщений: 946
  • Спасибо получено: 1129
  • Проект месяца 2 местоРазработчикДаритель СтимкеяПрограммист RubyПрограммист JavaScript Проект месяца 1 местоУчитель2 место ПаладинПроект месяца 3 место
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);
}; там не только это, другие функции
Администратор запретил публиковать записи гостям.
Модераторы: NeKotZima
Время создания страницы: 0.319 секунд