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

9xakep 01.01.2013 15:44

ООП вопрос, счетчик детей
 
В общем такая задача (я ее сделал, но с другом думаем, как лучше)

У меня есть башня, которая стреляет, каждый новый снаряд - это новый ребенок конструктора 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())


Я понимаю, что мой не красивый, но какая разница, что так я создаю объект, что так

Dim@ 01.01.2013 16:30

9xakep,
может сделать подобие твоего варианта, только не в прототип мешать (кстати у любого экземпляра можно будет помотреть кол-во родившихся снарядов), а использовать св-о класса, прямо как у класса Date?:)

9xakep 01.01.2013 16:39

Цитата:

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

только если через __proto__

Цитата:

Сообщение от Dim@
а использовать св-о класса, прямо как у класса Date?

Какого еще класса? О_о
И что там используется, как у меня?

Hekumok 01.01.2013 16:52

Цитата:

Сообщение от 9xakep
Цитата:

Сообщение от Dim@
а использовать св-о класса, прямо как у класса Date?:)

Какого еще класса? О_о

Я думаю это
function A() {
A.chet += 1 ; 
} ;
A.chet = 0 ;
new A() ;
new A() ;
alert(A.chet)

9xakep 01.01.2013 17:11

Hekumok,
А ясно ,спасибо
Дима при чем тут класс? В js объекты так то

godofjavascript 01.01.2013 18:47

Цитата:

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

нубик ты наш, получить прототип можно примерно так

var q = new Cat;

q.constructor.prototype === __proto__

9xakep 01.01.2013 19:01

godofjavascript,
Я и так знаю, что обращениек прототипу конструктора есть __proto__

Dim@ 01.01.2013 23:29

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-а такие св-а называются статическими св-ми класса (мы же используем классы) :)

9xakep 02.01.2013 01:21

function A() {
A.prototype.chet += 1
}
A.prototype.chet=0;
var b = new A();
alert(b.__proto__.chet)

Dim@ 02.01.2013 13:46

9xakep,
Цитата:

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

я показал что можно без прото


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