ООП вопрос, счетчик детей
В общем такая задача (я ее сделал, но с другом думаем, как лучше)
У меня есть башня, которая стреляет, каждый новый снаряд - это новый ребенок конструктора Shoot(); Мой вариант: как посчитать количество детей у родителя function a() { a.prototype.chet += 1; // Каждое рождение увеличиваем его } a.prototype.chet = 0; // Создаем свойство в прототипе родителя var b = new a() var c = new a() alert(a.prototype.chet) // 2 Его: var bullets = [] bullets.push(new Shoot()) Я понимаю, что мой не красивый, но какая разница, что так я создаю объект, что так |
9xakep,
может сделать подобие твоего варианта, только не в прототип мешать (кстати у любого экземпляра можно будет помотреть кол-во родившихся снарядов), а использовать св-о класса, прямо как у класса Date?:) |
Цитата:
Цитата:
И что там используется, как у меня? |
Цитата:
function A() { A.chet += 1 ; } ; A.chet = 0 ; new A() ; new A() ; alert(A.chet) |
Hekumok,
А ясно ,спасибо Дима при чем тут класс? В js объекты так то |
Цитата:
var q = new Cat; q.constructor.prototype === __proto__ |
godofjavascript,
Я и так знаю, что обращениек прототипу конструктора есть __proto__ |
9xakep,
через __proto__? да неужто :) function a() { a.prototype.chet += 1; // Каждое рождение увеличиваем его } a.prototype.chet = 0; // Создаем свойство в прототипе родителя var b = new a() var c = new a() alert(b.chet) // 2 alert(c.chet) // 2 Hekumok правильно выразил мою мысль, в примере Hekumok-а такие св-а называются статическими св-ми класса (мы же используем классы) :) |
function A() { A.prototype.chet += 1 } A.prototype.chet=0; var b = new A(); alert(b.__proto__.chet) |
9xakep,
Цитата:
|
Dim@,
эпик фейспалм То что ты написал, вначале ищет в самом ребенке, потом в его прототипе, потом в прототипе родителя. Так что моё плюс ко всему работает быстрее, потому что не ищет |
9xakep,
только про скорость не нужно гнать, надо быть реалистами, что тот что этот способ будет по скорости не замечен, так что это не минус |
кэп подсказывает что количество детей это статическое свойство класса, а статические свойства хранятся в конструкторе
function Bullet (){ Bullet.count ++ } Bullet.count = 0; таким образом всегда можно посмотреть количество пуль. даже ни создав ни одной пули. |
на самом деле "его" способ более правильный, так как в последствии велика вероятность, что считать надо будет не все инстансы пуль, а например:
а) отдельно для каждого стрелка б) только те, что летят, но не те, что находятся в "пуле пуль" (дабы не создавать и не уничтожать объекты лишний раз) в) отдельно пули каждого вида и тп |
tenshi,
Его чья? |
tenshi,
нубло молчал бы да не позорился. пули выпущенные стрелком будет стрелок считать. |
godofjavascript,
ну то что предложил ты я как раз вначале предложил |
9xakep,
а у тебя я что-то тупанул, добавлять через прототип этой твой способ, а не мой Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
|
Цитата:
Цитата:
|
Цитата:
|
Часовой пояс GMT +3, время: 00:37. |