Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Помощь новичку (https://javascript.ru/forum/misc/65541-pomoshh-novichku.html)

D34DStone 24.10.2016 15:52

Помощь новичку
 
Прошу помочь мне. Дело в том, что при ручном дебаге кода все работает нормально, однако, когда я запускаю "AnimationList.Start()" начинаются неполадки:
TypeError: this.Animations is undefined

var AnimationList = {
	Animations : new Array(),
	Interval : 50,
	AnimationNumber : 0,
}

AnimationList.Push = function (pic) {
	this.Animations.push (pic);
}

AnimationList.Get = function () {
	return this.Animations[this.AnimationNumber];
}

AnimationList.Change = function () {
	this.AnimationNumber++;
	if (this.AnimationNumber == this.Animations.length)
		this.AnimationNumber = 0;
}

AnimationList.SetInterval = function (Interval) {
	this.Interval = Interval;
}

AnimationList.Start = function () {
	this.Timer = setInterval (this.Change, this.Interval);
}


буду признателен за помощь

Rise 24.10.2016 16:17

D34DStone, this.Change.bind(this)

D34DStone 24.10.2016 16:29

спасибо, помогло

sirius1 24.10.2016 20:23

Добрый день. Подскажите и мне. Как поменять функцией переменную вне функции? Заранее благодарен.
var x = 1, x1 = 3;
var some = function(y){
  y = 2;
  return y
}
some(x);
some(x1);
console.log(x); //должно быть 2
console.log(x1); //аналогично, должно быть 2

Aetae 24.10.2016 20:31

Простой ответ: никак. Только не примитивные значения(объекты) передаются в функцию по сслыке.

sirius1 24.10.2016 20:54

Да, но если я присвою внутри функции x1 значение y, то console.log(x1) покажет 2, ведь так? Я правильно понял, что нет способа присваивать значение переменной, которую подставляю в функцию на место "y", непосредственно внутри функции?
var x = 1, x1 = 3;
var some = function(y){
y = 2;
x1 = y;
  return y
}
some(x);
some(x1);
console.log(x); //должно быть 2
console.log(x1); //здесь же будет 2?

рони 24.10.2016 21:08

sirius1,
мысли вслух ...
var obj = {x : 1, x1 : 3};
var some = function(y){
  obj[y] = 2
}
some('x');
some('x1');
alert(obj.x); //должно быть 2
alert(obj.x1); //аналогично, должно быть 2

sirius1 24.10.2016 21:31

Я собственно к чему это, читаю книгу, пытаюсь выполнить задание " В качестве упражнения напишите две функции, reverseArray и reverseArrayInPlase. Первая получает массив как аргумент и выдает новый массив - с обратным порядком элементов. Вторая работает как оригинальный метод reverse - она меняет порядок элементов на обратный в том массиве, который ей был передан в качестве аргумента. Не используйте метод reverse."
С первым все более менее понятно, второй написать не получается
var arrayValue = [1,2,3,4,5];
reverseArrayInPlase(arrayValue);
console.log(arrayValue)
//[5,4,3,2,1]

Aetae 24.10.2016 21:33

Массив(как и функция) - не примитивное значение. Он передаётся по ссылке.


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