Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Длина массива в объекте (https://javascript.ru/forum/misc/24496-dlina-massiva-v-obekte.html)

diagnost 03.01.2012 19:32

Не совсем. Можно ли каунт получить один раз и навсегда после добавления всех новых слов?

рони 03.01.2012 19:40

Цитата:

Сообщение от diagnost
Я с первого поста спрашивал, как сделать так, чтобы не было "каждый раз", а был только один раз в момент вызова LWord.count

,
А чем вам не подошёл вариант предложенный в первых постах ?
function Lingvo() {
	this.Eng = [];
	this.Rus = [];
	this.Add = function (EngWord, RusWord) {
			this.Eng.push(EngWord); 
			this.Rus.push(RusWord); 			.

	};
    this.count = function ()
{
  return  this.Eng.length;
}
}

var LWord = new Lingvo;

LWord.Add("father", "папа");
LWord.Add("he", "он");
LWord.Add("bread", "хлеб");
LWord.Add("I", "я");

alert (LWord.count());
alert (LWord.Eng[1]);
alert (LWord.Rus[1]);

Livaanderiamarum 03.01.2012 19:41

можно но тогда тебе нужно добавлять методами ПУШ и потом как надобавляешь, то есть после

LWord.Add("father", "папа");
LWord.Add("he", "он");
LWord.Add("bread", "хлеб");
LWord.Add("I", "я");


сделать следущее

LWord.count = LWord.Eng.length

и в каунте у тя будет лежать длинна.. пипец неужели это так сложно)))?

но такой способ медленнее которого я дал потмоу что тут действий больше а в моем одно)))

Livaanderiamarum 03.01.2012 19:43

Ну вот, самый лучший вариант


function Lingvo() {
	this.count = 0;
	this.Eng = [];
	this.Rus = [];
	this.Add = function (EngWord, RusWord) {
			this.Eng[this.count] = EngWord; //суешь туда
			this.Rus[this.count] = RusWord; //суешь сюда
			this.count ++;//прибавляешь длинну
	}
}

var LWord = new Lingvo;

LWord.Add("father", "папа");
LWord.Add("he", "он");
LWord.Add("bread", "хлеб");
LWord.Add("I", "я");

alert (LWord.count);
alert (LWord.Eng[1]);
alert (LWord.Rus[1]);

zebra 03.01.2012 19:53

Проблема высосана из пальца :-?

Livaanderiamarum 03.01.2012 19:57

Цитата:

Сообщение от zebra (Сообщение 147871)
Проблема высосана из пальца :-?

Проблема начинается от непонимания устройства систем языка)

diagnost 03.01.2012 20:32

Цитата:

Сообщение от Livaanderiamarum (Сообщение 147868)
можно но тогда тебе нужно добавлять методами ПУШ и потом как надобавляешь, то есть после

LWord.Add("father", "папа");
LWord.Add("he", "он");
LWord.Add("bread", "хлеб");
LWord.Add("I", "я");


сделать следущее

LWord.count = LWord.Eng.length

и в каунте у тя будет лежать длинна.. пипец неужели это так сложно)))?

но такой способ медленнее которого я дал потмоу что тут действий больше а в моем одно)))

Я могу так получить длину, уже писалось об этом на предыдущих страницах несколько раз. Вопрос стоял другой. Можно ли написать объект, содержащий массив, чтобы длину массива можно было бы прочесть в count через вызов LWord.count без суммирования за один раз. Способ "внешнего" присвоения значения count, как посоветовали в этом сообщении, неприемлем по очевидным причинам - метод получения count должен находиться внутри объекта, а не через "внешние" операции с объектом. ООП предполагает именно такой подход.
Пока никто так на этот простой вопрос не дал ответа.

Kolyaj 03.01.2012 20:37

Сделайте count функцией. В чём проблема-то?

diagnost 03.01.2012 20:39

Расшифрую. ИМХО, count правильно получать в Lingvo, а не в LWord и за один раз, а не постоянно суммируя.

diagnost 03.01.2012 20:39

Kolyaj, вот не получается у меня. Может, у Вас получится? Попробуйте.


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