Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/441.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
面向对象Javascript_Javascript_Oop - Fatal编程技术网

面向对象Javascript

面向对象Javascript,javascript,oop,Javascript,Oop,这是我第一次尝试oo 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()

这是我第一次尝试oo 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();
};
函数GuiObject(){
这个.x=0;
这个。y=0;
这个宽度=0;
这个高度=0;
this.parent=null;
这是:children=[];
this.getWidth=函数()
{
返回这个.width;
};
this.getHeight=函数()
{
返回此参数。高度;
};
this.paint=函数(ctx)
{
};
};
函数paintGui(ctx,root)
{
ctx.save();
ctx.translate(root.x,root.y);
根涂料(ctx);

对于(inti=0;i来说,如果不查看实际构造
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)
{

};

通过这种方式,每个实例都可以共享相同的方法。另一种方式是,为创建的每个实例创建新的函数对象。在构造函数中定义方法而不是将其附加到原型的唯一原因是,如果它们需要访问从未附加到

如果不查看实际构造
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)
{

};

通过这种方式,每个实例都可以共享相同的方法。另一种方式是,为创建的每个实例创建新的函数对象。在构造函数中定义方法而不是将其附加到原型的唯一原因是,如果它们需要访问从未附加到
这个

inti
?那在Javascript中应该是什么意思?我想你指的是
var i


顺便说一句,和所有其他回应的人一样,我看了你的代码,没有立即发现。然后我做的是将你的函数复制/粘贴到Javascript控制台,并逐渐删除行,直到它停止抱怨。尝试一点点Javascript是一种有用的技术。

int I
?这是什么支持sed在Javascript中是什么意思?我想你指的是
vari


顺便说一句,和所有其他回应的人一样,我查看了你的代码,没有立即发现。然后我做的是将你的函数复制/粘贴到Javascript控制台,并逐渐删除行,直到它停止抱怨。尝试一点点Javascript是一种有用的技术。

Hmmm,“一个错误”你说?也许你做错了什么?:)是的,我同意。这肯定是错的。我们能看看“根”(paintGui上的第二个参数)是如何创建的吗?嗯,你说的“一个错误”?也许你做错了什么?:)是的,我同意。这肯定是错的。我们能看看“根”(paintGui上的第二个参数)是如何创建的吗创造了什么?