Показать сообщение отдельно
  #1 (permalink)  
Старый 30.03.2016, 20:05
Аспирант
Отправить личное сообщение для karden Посмотреть профиль Найти все сообщения от karden
 
Регистрация: 16.01.2016
Сообщений: 57

Работа с классами
Разбираюсь с классами.

Сделал такое (вроде все лишнее вычистил, может что лишнее удалил, но суть вопроса будет понятна):

var userData = {};

	class inputUserData {
		constructor(settings) {
			var that = this;
			var initSettings = settings;
			
			if (initSettings.debugMode) {
				console.log('class inputUserData: constructor - Begin');
				console.log('class inputUserData: settings %O', initSettings);
			}
			
// Some code
			return (this);
		} // class inputUserData constructor

		setUserID (UserID) {
			if (initSettings.debugMode) console.log('class inputUserData: setUserID - Begin');
alert(UserID); // Работает
alert (initSettings.appendPlace); // Не работает
			return (this);
		} // setUserID ()

	} // class inputUserData

	var inputUserPhoneSettings = {
		appendPlace:	'inputUserPhone',
	  	debugMode:		true
	};

	let inputUserPhone = new inputUserData (inputUserPhoneSettings);


HTML:

	<table width="100%">
	 <tr id="inputUserPhone"></tr>
	</table>

	$( "#..." ).click( function(){
		inputUserPhone.setUserID(101);
	});


Собственно вопрос в следующем. Не могу понять где общее пространство переменных? Как их объявить в конструкторе, чтобы они были доступны из методов?

И, заодно, не смог найти главу, где описывалась конструкция that = this, чтобы не терять ссылку на нужный объект. Точно помню, что об этом была написана хорошая статья. Надо перечитать.

И, как следствие, если я правильно понимаю, то для того, чтобы можно было вызывать методы одной командой через "." я должен везде (во всех метода) возвращать ссылку на свой объект. Надо ли это делать в конструкторе?

Спасибо.
Ответить с цитированием