Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 16.06.2014, 01:02
Новичок на форуме
Отправить личное сообщение для NORD Посмотреть профиль Найти все сообщения от NORD
 
Регистрация: 16.06.2014
Сообщений: 2

Наследование
Здравствуйте пытаюсь разобраться с js пришел к наследованию, вообщем надо сделать так: A наследуется от B и С наследуется от А, то есть наследование 2 уровней, и что бы соответсвенно в C были поля и функции A и B. Это реально?
Ответить с цитированием
  #2 (permalink)  
Старый 16.06.2014, 01:18
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,501

Упрощённо:
A = function(){};
A.prototype.A = function(){return 'A'};

B = function(){};
B.prototype = new A;
B.prototype.B = function(){return 'B'};

C = function(){};
C.prototype = new B;
C.prototype.C = function(){return 'C'};

a = new A;
b = new B;
c = new C;

alert(c.A() + c.B() + c.C())
A.prototype.A = function(){return 'A2'};
alert(c.A() + c.B() + c.C())
Но каждый толкует по своему, каждый пишет свои обёртки. Если погуглить на тему "javascript ооп" найдётся куча всяких вариантов.
__________________
29375, 35

Последний раз редактировалось Aetae, 16.06.2014 в 01:21.
Ответить с цитированием
  #3 (permalink)  
Старый 16.06.2014, 01:33
Профессор
Отправить личное сообщение для Sweet Посмотреть профиль Найти все сообщения от Sweet
 
Регистрация: 16.03.2010
Сообщений: 1,618

Чистое js-наследование:
Child.prototype = Object.create(Parent.prototype, {
  constructor: {
    value: Child,
    enumerable: false
  }
});
Всё остальное - надстройки.
Ответить с цитированием
  #4 (permalink)  
Старый 16.06.2014, 01:35
Профессор
Отправить личное сообщение для Sweet Посмотреть профиль Найти все сообщения от Sweet
 
Регистрация: 16.03.2010
Сообщений: 1,618

Сообщение от Sweet
Чистое js-наследование
Я имею ввиду в рамках ECMAScript 5.1, т.е. актуального на данный момент стандарта.
Ответить с цитированием
  #5 (permalink)  
Старый 16.06.2014, 01:42
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,501

Ну це классика, да и ie8 ещё слегка актуален(зависит от сферы применения конечно).
__________________
29375, 35
Ответить с цитированием
  #6 (permalink)  
Старый 16.06.2014, 18:14
Новичок на форуме
Отправить личное сообщение для NORD Посмотреть профиль Найти все сообщения от NORD
 
Регистрация: 16.06.2014
Сообщений: 2

Спасибо! Когда делаю на простых примерах то все ок, а как пытаюсь перенести в "реал" ***, вообщем пытаюсь разобраться с движком Phaser, надо унаследовать класс от Phaser.Group унаследовал, все ок, а вот когда пытаюсь добавить еще один уровень, то есть унаследовать от унаследованного от Phaser.Group, то Phaser начинает ругаться...

function create()
{
   hero = new Hero(game);   
   hero.init(game.world.randomX, game.world.randomY, 0);
}

//====================================================================================//
Hero.prototype = Object.create(BasicObject.prototype);
function Hero(game)
{
   BasicObject.call(this, game);
   console.log("Hero Created!");
}

Hero.prototype.init = function(posX, posY, rot)
{
   this.sprite = new Phaser.Sprite(game, 'hero', 0, 0, 3);


   BasicObject.prototype.init.call(this, posX, posY, rot);
}


//====================================================================================//
BasicObject.prototype = Object.create(Phaser.Group.prototype);
function BasicObject(game)
{
   console.log("BasicObject Created!");


   Phaser.Group.call(this, game);


   this.container = null;
   this.sprite = null;
   this.timer = 100;
}

BasicObject.prototype.init = function(posX, posY, rot)
{
   if(this.sprite != null) this.add(this.sprite);

   this.x = posX;
   this.y = posY;
   this.angle = rot;
}


Ошибки:
TypeError: a.setStageReference is not a function phaser.min.js:3
TypeError: this.children[a].preUpdate is not a function phaser.min.js:7

То есть такое ощущение что при наследовании теряется часть сущности что ли... короче хз...
Ответить с цитированием
  #7 (permalink)  
Старый 16.06.2014, 21:08
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

Множественное наследование, супер методы, наследование дескрипторов
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как правильно реализовать наследование? Universe Общие вопросы Javascript 9 10.04.2014 16:05
Вопросы про наследование xfreewindx Общие вопросы Javascript 1 03.04.2013 12:39
Прототипное наследование не распространяется на вложенные свойства? novikov Общие вопросы Javascript 4 19.11.2012 14:31
наследование в javascript mat5978 Общие вопросы Javascript 18 23.11.2011 16:17
Наследование класса-замыкания и вызов метода предка BobiKK Общие вопросы Javascript 2 21.03.2010 13:26