|
Длина массива в объекте
Имеется скрипт:
<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);
}
}
var LWord = new Lingvo;
LWord.AddEng("father");
LWord.AddRus("папа");
LWord.AddEng("he");
LWord.AddRus("он");
LWord.AddEng("bread");
LWord.AddRus("хлеб");
alert (LWord.count);
</script>
Нельзя ли более грамотно получать длину массива Lingvo.count без суммирования? |
Eng.length Rus.length |
Не работает, будет равно нулю. length в объекте, судя по всему, присваивается в самом начале, когда массивам еще не переданы величины после создания объекта:
//this.count = 0; this.count = Eng.length //......... alert (LWord.count);// = 0 Вот потому и спрашиваю. length хотелось бы получить однократно без постоянного суммирования, может быть через вызов функции, но как - не соображу. |
После вашего кода вызовите
alert(LWord.Eng.length, LWord.Rus.length); |
Так работает, но хотелось бы иметь свойство "второго" порядка, а не "третьего". То-есть не LWord.Eng.length, а LWord.count
|
Ну так в чём проблема? Создать отдельное свойство которое вернет length? ;)
|
Как?
this.count = Eng.length или this.count = this.Eng.length в обоих случаях LWord.count будет равен нулю. |
this.count = function() {
return Eng.length;
};
|
Результат отрицательный. В окне после вызова alert (LWord.count) выводится:
function() {
return Eng.length;
}
|
Покажите весь код
|
| Часовой пояс GMT +3, время: 16:04. |
|