Показать сообщение отдельно
  #1 (permalink)  
Старый 22.01.2017, 13:59
Аватар для komplekt_17
Аспирант
Отправить личное сообщение для komplekt_17 Посмотреть профиль Найти все сообщения от komplekt_17
 
Регистрация: 14.01.2017
Сообщений: 46

Как добавить в массив объект через конструктор?
Всех приветствую, мне нужно сделать следующее:
1. Создавать новый экземпляр объекта UserList (с пустым свойством-массивом users)
2. Открываться диалог prompt с предложением ввести имя и фамилию пользователя для регистрации (одной строкой через пробел)
3. После нажатия ОК должен создаваться новый экземпляр объекта User с заполнением свойств firstName, lastName и regDate (текущая дата и время)
4. Созданный экземпляр объекта должен сохраняться в свойство-массив users созданного ранее объекта типа UserList (при помощи метода add)
5. Диалог prompt должен повторяться, пока пользователь не нажмет «Отмена»
6. После нажатия «Отмена» выведите на экран (в консоль или при помощи alert) список всех пользователей с именами и датами регистрации (используйте для этого метод getAllUsers)
код пишу такой:
function User(x,y,z){
	this.firstName = x,// имя
	this.lastName = y,// фамилия
	this.regDate = z// дата и время регистрации
}

function UserList(){
	// внутреннее свойство-массив, в которое будут попадать объекты типа User
	this.users = [],
	// метод получает в качестве параметра объект типа User и сохраняет его в массив users
	this.add = function(user) {
		this.users.push([user]);
	},
	// метод возвращает список пользователей из массива users
	this.getAllUsers = function() {
		var arr = this.users;
		for(var i in arr){
			console.log(i + ': ' + arr[i]);
		}
	}
}
var eUser = '';

// циклируем пока кнопка "отмена" НЕ нажата
while(eUser != null){
	eUser = prompt("Введите ваше Имя и Фамилию через пробел","");
	if(eUser != null){
		var nameUser = eUser.split(' ');
		if(nameUser[1] !== undefined){
			var param1 = nameUser[0];
			var param2 = nameUser[1];
			var param3 = getDateNow();
			var newObject = new User(param1,param2,param3);
			var twoObj = new UserList();
			twoObj.add(newObject);
		}
		else{
			alert("Между Имя и Фамилия должен быть пробел");
		}
	}
	else{
		new UserList().getAllUsers();
	}
}

// функция получения текущей даты и времени
function getDateNow(){
	var now = new Date();
	var date = now.getDate();//получаем число месяца
	// получаем месяц
	var month = 'января,февраля,марта,апреля,мая,июня,июля,августа,сентября,октября,ноября,декабря'.split(',');
	var monthWord = month[now.getMonth()];
	var year = now.getFullYear();//получаем год
	//получаем день недели
	var dayWeek = 'воскресенье,понедельник,вторник,среда,четверг,пятница,суббота'.split(',');
	var dayWeekWord = dayWeek[now.getDay()];
	//получаем часы, минуты, секунды
	var hour = now.getHours();
	var minute = now.getMinutes();
	var second = now.getSeconds(); 
	if(hour.length == 1){hour = '0' + hour} 
	if(minute.length == 1){minute = '0' + minute} 
	if(second.length == 1){second = '0' + second}
	var regDate = 'Регистрация: ' + date + ' ' + monthWord + ' ' + year + ' года, ' + hour + ':' + minute + ':' + second;
	return regDate;
}

думаю, затык где-то здесь:
this.add = function(user) {
		this.users.push([user]);
	},

новый объект не добавляется в массив

Последний раз редактировалось komplekt_17, 22.01.2017 в 14:13.
Ответить с цитированием