Millerish
@Millerish

JS: как правильно использовать прототипы?

Доброе время суток!

Хочу немного лучше понять js, в туторах все четко, но колесики не сходятся с реальностью. Объясните как правильно решать такую задачу.

Допустим у нас есть объекты и прототип:

function Person(first, last, age, eye) {
    this.firstName = first;
    this.lastName = last;
    this.age = age;
    this.eyeColor = eye;
}

var myFather = new Person("John", "Doe", 50, "blue");
var myMother = new Person("Sally", "Rally", 48, "green");


Все работает, но если у меня в реальности просто работает цикл - у меня нет возможности давать имена (myFather, myMother), у меня есть просто i - это сколько таких объектов нужно создать. Т.е. первый вопрос как их создавать в боевых условиях?

Вопрос второй по удалению delete myMother. Опять же когда пишу код из тутора все работает. Как мне сказать в боевых условиях "удали первый и 34й объект" или "удали те объекты у которых age == 27"?

А третий вопрос, самый загадочный (для меня). Как мне мне выбрать например 2й объект (я не знаю его имени)?

Как узнать сколько "живых"(которых я не удалил) объектов от этого прототипа сейчас?

Покажите, пожалуйста, доступный для понимания, но реальный пример по работе с такими задачами. Я или нахожу что-то совсем тестовое или что-то чего понять не могу.

Если знаете, что почитать - поделитесь.

Заранее спасибо! Мое любимое место для получения ответов )
  • Вопрос задан
  • 375 просмотров
Решения вопроса 1
abyrkov
@abyrkov
JavaScripter
Все работает, но если у меня в реальности просто работает цикл - у меня нет возможности давать имена (myFather, myMother), у меня есть просто i - это сколько таких объектов нужно создать. Т.е. первый вопрос как их создавать в боевых условиях?

Странный вопрос. Массив объектов - JS же слаботипизированый.
var array = [];
for(var i = 0; i < 100; i++) array.push(new Person('aaa', 'bbb',  60, 'hgf');


Вопрос второй по удалению delete myMother. Опять же когда пишу код из тутора все работает. Как мне сказать в боевых условиях "удали первый и 34й объект" или "удали те объекты у которых age == 27"?

В программе нельзя просто удалить объект, нужно дать на него ссылку. Если они у вас все в массиве, то соответсвенно будет
delete array[1];

А третий вопрос, самый загадочный (для меня). Как мне мне выбрать например 2й объект (я не знаю его имени)?

Для выбора объекта, не надо знать его имени. Надо иметь на него ссылку.

Как узнать сколько "живых"(которых я не удалил) объектов от этого прототипа сейчас?

Никак

Мне кажется, вы не прочитали про переменые. В любом случае их не правильно поняли
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы