Javascript-форум (https://javascript.ru/forum/)
-   Оффтопик (https://javascript.ru/forum/offtopic/)
-   -   Как описывать свойства ООП? (https://javascript.ru/forum/offtopic/36647-kak-opisyvat-svojjstva-oop.html)

kobezzza 23.03.2013 10:30

Если я правильно понял твой вопрос, то так.
function Animal() {
	...
	...
	this.life = new Life();
};

/**
 * Объект жизни
 *
 * @type {Life}
 */
Animal.prototype.life = null;

/**
 * Убить животное
 */
Animal.prototype.die = function () {
    ...
};


Т.е. в прототип я просто декларирую сам факт существования свойства, а не его значение (если конечно таковое не требуется).
Такой подход имхо удобен для чтения, а также дополнительный профит, что нормальная ИДЕ лучше автокомплитит по коду.

2) Какую статью? Я просто пробывал писать игрульки в своё время, 2-мерные, аля марио и т.д. и у меня как раз тормоза были на массивах препятствий и монстриков, после того как перешёл на типизированные, то всё исправилось, но на статью ссылку дай :)

megaupload 23.03.2013 10:35

я думал ты про это О_О

http://habrahabr.ru/post/119694/

kobezzza 23.03.2013 10:37

Цитата:

Сообщение от megaupload (Сообщение 242149)
я думал ты про это О_О

http://habrahabr.ru/post/119694/

Да :) Я хабр редко читаю, но читаю mdn, от туда и узнал про них:)

megaupload 23.03.2013 10:48

а наследование ты делаешь так?

/* Животинка
 ----------------------------------------------------*/
function Animal() {
    this.childerns = [];
    this.isWalk = null;
}

Animal.prototype.go = function () {
    alert('i going!')
};


/* Кошечка
 ----------------------------------------------------*/
function Cat() {
    this.position = new Position;
    this.age = null;
    this.name = null;
}

/*наследует от животинки*/
Cat.prototype = new Animal();
Cat.prototype.constructor = Cat;

Cat.prototype.sayMew = function () {
    alert('mew')
};

kobezzza 23.03.2013 10:53

Да

megaupload 23.03.2013 11:04

а сделай тройное наследование? с расширением к родительских методов.

kobezzza 23.03.2013 11:08

Без проблем, но напишу завтра) уехал из дома, а с телефона не удобно

megaupload 23.03.2013 11:09

ну я бы сделал его так


/* Боженька
 ----------------------------------------------------*/
function God() {
    this.go = function () {
        alert('i GOD');
    }
}


/* Животинка
 ----------------------------------------------------*/
function Animal() {
    this.childerns = [];
    this.isWalk = null;

    this.go = function () {
        Animal.prototype.go.call(this);
        alert('i going! cuz i animal')
    };
}

/*наследует от боженьки*/
Animal.prototype = new God;


/* Кошечка
 ----------------------------------------------------*/
function Cat() {
    this.position = new Array();
    this.age = null;
    this.name = null;


    this.sayMew = function () {
        alert('mew')
    };
    this.go = function () {
        Cat.prototype.go.call(this);
        alert('and JUMP!! cuz i CAT')
    };
}

/*наследует от животинки*/
Cat.prototype = new Animal();


new Cat().go();

kobezzza 24.03.2013 17:15

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

ЗЫ: я стал дядей, грац меня :)

megaupload 24.03.2013 17:24

твой брат родил или сестра)?


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