ООП вопрос, счетчик детей
В общем такая задача (я ее сделал, но с другом думаем, как лучше)
У меня есть башня, которая стреляет, каждый новый снаряд - это новый ребенок конструктора 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, время: 19:36. |