Показать сообщение отдельно
  #1 (permalink)  
Старый 28.08.2017, 14:23
Интересующийся
Отправить личное сообщение для Negotiant Посмотреть профиль Найти все сообщения от Negotiant
 
Регистрация: 27.03.2017
Сообщений: 28

Как передать названия спутников в конструктор?
function Satellite(data, planet) {
  this.planet = planet;
  this.x = data.x;
  this.y = data.y;

  this.move = function move() {
    /* реализация движения спутника */

    // при этом здесь доступны данные планеты
    this.planet.x;
    this.planet.y;
  }
}


function Planet(data) {
  this.radius = data.radius;
  this.satellites = [];
  this.x = data.x;
  this.y = data.y;

  for (var i = 0; i < data.satellites.length; i++) {
    this.satellites.push(new Satellite(data.satellites[i], this));
  }

  this.move = function move() {
    /* реализация движения только планеты */

    // и запуск движения спутников
    for (var i = 0; i < this.satellites.length; i++) {
      this.satellites[i].move();
    }
  }
}

// данные о планетах
var data = [{
  name: 'Earth',
  radius: 80,
  x: 100,
  y: 100,
  satellites: [{ // как передать названия спутников в их конструктор?
    name: 'Moon',
    radius: 10,
    x: 20, // относительно земли
    y: 20
  }]
}, {
  name: 'Mars',
  radius: 40,
  x: 160,
  y: 180,
  satellites: [{
    name: 'Moon1',
    radius: 1,
    x: 14, // относительно земли
    y: 18
  }]
}];

// здесь экземпляры планет
var planets = [];

// создаём планеты и сохраняем их в переменную planets
for (var i = 0; i < data.length; i++) {
  planets.push(new Planet(data[i]));
}
Ответить с цитированием