Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Метод не может получить свойство массива length (https://javascript.ru/forum/misc/65841-metod-ne-mozhet-poluchit-svojjstvo-massiva-length.html)

crazyIvan 10.11.2016 17:45

Метод не может получить свойство массива length
 
Метод не может прочитать свойство.
Всем привет, решил написать первое приложение и тут же встрял.

Создал 4 функции:
1. Первая функция генерирует работу первого спортсмена.
2. Вторая функция генерирует работу второго спортсмена.
3. Третья функция генерирует случайное число, размером не больше массива переданного в качестве аргумента.
4. Функция вызывает первую и вторую функцию, каждая из которых возвращает значение и выводит его в консоль.

Все работало, добавил новый конструктор и сделал функции его методами.
В итоге при вызове получаю ошибку Uncaught TypeError: Cannot read property 'length' of undefined(…).

Помогите разобраться в чем дело, а то я ума не приложу.
Я буду вам очень благодарен.

// Функция конструктор тренировки.
function training(roundLength, numberOfRounds, restTime) {
this.roundLength = roundLength,
this.numberOfRounds = numberOfRounds,
this.restTime = restTime,
this.trainingDuration = function() {
var timeOfTraining = (((this.numberOfRounds * this.roundLength) + (this.restTime * this.numberOfRounds)) / 60);
return timeOfTraining;
},
this.firstNumWorks = function(array){
var randNum = this.getRandomIndex(array);
var textWork = "Первый номер атакует " + randNum;
return textWork;
},
this.secondNumWorks = function(array) {
var randNum = getRandomIndex(array);
var randTactic = this.getRandomIndex(tactic);
var textWork = ", второй номер" + randTactic + randNum;
return textWork;
},
this.getRandomIndex = function(array) {
var num = Math.floor(Math.random() * array.length);
return array[num];
},
this.createNewRoutime = function() {
var time = this.numberOfRounds;
for (var i = 0; i < time; i = i + 1) {
console.log(this.firstNumWorks(punches) + this.secondNumWorks(punches));
}
};
};

// Создаем первую тренировку.
var firstTraining = new training(180, 20, 60)
console.log(firstTraining.trainingDuration());
Этот метод не вызывается и выдает ошибку>>>

console.log(firstTraining.getRandomIndex(punches)) ;


// Массив одиночных ударов.
var punches = ["левым прямым", "правым прямым", "левым боковым", "правым боковым", "левым снизу", "правым снизу"];

// Массив двух - ударных комбинаций в голову.
var combHead = ["Левый прямой - Правый прямой", "Левый боковой - правый прямой", "Левый снизу - правый прямой"];

// Массив двух - ударных комбинаций по этажам.
var combFloor =[];

// Массив защитных техник
var defence = ["Подставка", "Сбив", "Блок предплечьем", "Блок плечом", "Уклон", "Нырок", "Сайдстеп"];

// Массив характеров нанесения ударов
var tactic = [" отвечает ему ", " встречает его "];


/*
Здесь все работало >>>

// Функция возвращаются случайный элемент массива.
// Проверено!
function getRandomIndex(array) {
var num = Math.floor(Math.random() * array.length);
return array[num];
};

// Функции создающие случайные задания.

// Проверено!
function firstNumWorks(array){
var randNum = getRandomIndex(array);
var textWork = "Первый номер атакует " + randNum;
return textWork;
};
// Работа второго номера на встречу.
// Проверено!
function secondNumWorks(array) {
var randNum = getRandomIndex(array);
var randTactic = getRandomIndex(tactic);
var textWork = ", второй номер" + randTactic + randNum;
return textWork;
};


// Создает задание за счет вызова firstNumWorks и secondNumberWorks и выводит его в консоль.
// Проверено!
function createNewWork(Obj){
var trainingTime = Obj.trainingDuration();
for(var i = 0; i < trainingTime; i = i + 1) {
console.log(firstNumWorks(punches) + secondNumWorks(punches))
}
};
*/

crazyIvan 10.11.2016 18:49

Вопрос снят, автор идиот.
Просьба закрыть тему.


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