<html> <script> function Lingvo() { var Eng = []; var Rus = []; // this.count = 0; this.Eng = Eng; this.Rus = Rus; this.AddEng = function (EngWord) { Eng.push(EngWord); // this.count += 1; } this.AddRus = function (RusWord) { Rus.push(RusWord); } this.count = function() { return Eng.length; }; } var LWord = new Lingvo; LWord.AddEng("father"); LWord.AddRus("папа"); LWord.AddEng("he"); LWord.AddRus("он"); LWord.AddEng("bread"); LWord.AddRus("хлеб"); alert (LWord.count); </script> </html> |
Читайте книги, count в данном коде это же метод
|
Это понятно - и про метод, и про полезность книг. Существует ли возможность получить LWord.count в качестве величины?
|
1-й метод чем не устраивает?
|
Много слов в БД, не хотелось бы все время складывать. Хотя понятно, что на быстродействие это не сильно повлияет, но как-то некрасиво выглядит. Хочется элегантности.
|
Вариант ...
var Lingvo = function () { return { Eng: [], Rus: [], count: 0, AddEng: function (EngWord) { this.count = this.Eng.push(EngWord); }, AddRus: function (RusWord) { this.Rus.push(RusWord); } } } var LWord = Lingvo(); LWord.AddEng("father"); LWord.AddRus("папа"); LWord.AddEng("he"); LWord.AddRus("он"); LWord.AddEng("bread"); LWord.AddRus("хлеб"); alert (LWord.count); |
Вариант элегантней исходного. Если это предел возможного, остановлюсь на этом, хотя все еще присутствует неоднократное вычисление count. Спасибо.
|
Цитата:
|
Вообще два отдельных массива для того что вы делаете явно очень плохо.
Стоит один раз ошибиться - и всё, писец пришёл. |
Все дело в многомерных массивах. Объявить многомерный массив один раз, а потом добавлять в него элементы у меня не получилось, как я ни старался.
Если внимательно посмотреть на стандартный алгоритм заполнения двумерного массива, то можно увидеть, что new Array объявляется столько раз, сколько строк. Получается, например, что для десяти строк это будет десять массивов, а не два, как в моем случае. А если строк будет 1000? Это сказывается на памяти и быстродействии. Насчет борьбы с ошибками - есть смысл повторять подсчет count во втором массиве и контролировать нулевую разницу. |
Часовой пояс GMT +3, время: 02:58. |