gpt4 book ai didi

javascript - 面向对象的Javascript

转载 作者:行者123 更新时间:2023-11-28 12:48:21 26 4
gpt4 key购买 nike

这是我第一次尝试 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();
};

现在在paintGUI函数中,root.children.lengths行抛出一个错误:

未捕获的语法错误:意外的标识符。

我做错了什么?

谢谢!

最佳答案

如果不查看实际构造 GuiObject 的代码,很难说出您的实际问题是什么,但就其值(value)而言,这是编写该“类”的更好方法。

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)
{

};

这样做,每个实例都可以共享相同的方法。另一方面,您将为您创建的每个实例创建新的函数对象。在构造函数中定义方法而不是将它们附加到原型(prototype)的唯一原因是它们需要访问从未附加到 this 的私有(private)成员。

关于javascript - 面向对象的Javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4919513/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com