Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   ООП вопрос, счетчик детей (https://javascript.ru/forum/misc/34376-oop-vopros-schetchik-detejj.html)

9xakep 02.01.2013 19:05

Dim@,
эпик фейспалм

То что ты написал, вначале ищет в самом ребенке, потом в его прототипе, потом в прототипе родителя. Так что моё плюс ко всему работает быстрее, потому что не ищет

Dim@ 02.01.2013 21:03

9xakep,
только про скорость не нужно гнать, надо быть реалистами, что тот что этот способ будет по скорости не замечен, так что это не минус

godofjavascript 02.01.2013 23:32

кэп подсказывает что количество детей это статическое свойство класса, а статические свойства хранятся в конструкторе

function Bullet (){
    Bullet.count ++
}

Bullet.count = 0;


таким образом всегда можно посмотреть количество пуль.

даже ни создав ни одной пули.

tenshi 03.01.2013 00:07

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

9xakep 03.01.2013 00:24

tenshi,
Его чья?

godofjavascript 03.01.2013 04:51

tenshi,
нубло молчал бы да не позорился. пули выпущенные стрелком будет стрелок считать.

Dim@ 03.01.2013 10:19

godofjavascript,
ну то что предложил ты я как раз вначале предложил

Dim@ 03.01.2013 10:32

9xakep,
а у тебя я что-то тупанул, добавлять через прототип этой твой способ, а не мой
Цитата:

Сообщение от Dim@
(кстати у любого экземпляра можно будет помотреть кол-во родившихся снарядов)

Цитата:

Сообщение от 9xakep
только если через __proto__

Цитата:

Сообщение от Dim@
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

Цитата:

Сообщение от 9xakep
эпик фейспалм

и где тут эпик фейспалм?:blink:

Цитата:

Сообщение от Dim@
только про скорость не нужно гнать, надо быть реалистами, что тот что этот способ будет по скорости не замечен, так что это не минус

вот здесь тупанул ведь обсуждался твой способ и то что ты писал как раз к твоему способу относится (а __proto__ не всеми браузерами поддерживается);)

tenshi 03.01.2013 12:18

Цитата:

Сообщение от 9xakep (Сообщение 224893)
tenshi,
Его чья?

..
Цитата:

Сообщение от 9xakep (Сообщение 224691)
Мой вариант:

как посчитать количество детей у родителя
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())


tenshi 03.01.2013 12:21

Цитата:

Сообщение от godofjavascript (Сообщение 224919)
tenshi,
пули выпущенные стрелком будет стрелок считать.

это очевидно, но обсуждаемый тут способ будет считать дополнительно и никому уже не нужное общее число пуль.


Часовой пояс GMT +3, время: 21:29.