Объектно-ориентированный Javascript - PullRequest
0 голосов
/ 07 февраля 2011

это моя первая попытка oav javascript:

function GuiObject() {
  this.x = 0;
  this.y = 0;
  this.width = 0;
  this.height = 0;
  this.parent = null;
  this.children = [];

  this.getWidth = function() 
  {
    return this.width;
  };
  this.getHeight = function() 
  {
    return this.height;
  };

  this.paint = function(ctx)
  {

  };

};



function paintGui(ctx, root)
{
  ctx.save();
  ctx.translate(root.x, root.y);
  root.paint(ctx);
  for (int i=0; i<root.children.length; ++i)
  {
    paintGui(ctx, root.children[i]);
  }
  ctx.restore();
};

Теперь в функции paintGUI строка root.children.lengths выдает ошибку:

Uncaught SyntaxError: Неожиданный идентификатор.

Что я сделал не так?

Спасибо!

Ответы [ 2 ]

4 голосов
/ 07 февраля 2011

Трудно сказать, какова ваша настоящая проблема, не глядя на код, который на самом деле создает GuiObject, но для того, чтобы он того стоил, вот лучший способ написать этот «класс».

function GuiObject() {
  this.x = 0;
  this.y = 0;
  this.width = 0;
  this.height = 0;
  this.parent = null;
  this.children = [];
}

GuiObject.prototype.getWidth = function() 
{
    return this.width;
};

GuiObject.prototype.getHeight = function() 
{
    return this.height;
};

GuiObject.prototype.paint = function(ctx)
{

};

Делая это таким образом, каждый экземпляр может использовать одни и те же методы.С другой стороны, вы будете создавать новые функциональные объекты для каждого созданного вами экземпляра.Единственная причина когда-либо определять методы в конструкторе вместо того, чтобы прикреплять их к прототипам, заключается в том, что им нужен доступ к закрытым членам, которые никогда не присоединяются к this.

2 голосов
/ 07 февраля 2011

int i? Что это должно означать в Javascript? Я думаю, что вы имели в виду var i.

Кстати, как и все другие люди, которые ответили, я посмотрел ваш код и не сразу его заметил. Затем я скопировал / вставил вашу функцию в консоль Javascript и постепенно удалял строки, пока не перестал жаловаться. Это полезная техника, чтобы опробовать небольшие кусочки JavaScript.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...