2011-02-07 22 views
0

これはオブジェクト指向のJavaScriptで私の最初の試みである:オブジェクト指向の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でエラーが発生します:

キャッチされないでSyntaxError:予期しない識別子を。

どうしたのですか?

ありがとうございます!

+0

彼らがどんなエラーを投げるか – deceze

+3

うん、* "エラー" *あなたは言う?おそらくあなたは何か間違っていたのでしょうか? :) –

+1

ええ、私は同意します。それは間違いなく間違っていることです。 –

答えて

2

int i? Javascriptでどういう意味ですか?私はあなたがvar iを意味したと思います。

ところで、回答した他のすべての人々と共通して、私はあなたのコードを見てすぐに見つけませんでした。私がしたのは、Javascript Consoleにあなたの機能をコピー/ペーストして、それが不平を言うまで徐々に行を削除することでした。これは、javascriptの少しの部分を試してみると便利なテクニックです。

+0

ありがとう、私が言ったように、私はjsに新しいです。 ;) – clamp

4

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

}; 

このようにすると、すべてのインスタンスが同じメソッドを共有できます。もう1つの方法は、作成したすべてのインスタンスに対して新しい関数オブジェクトを作成することです。プロトタイプにアタッチする代わりにコンストラクタ内のメソッドを定義する唯一の理由は、thisにアタッチされていないプライベートメンバーにアクセスする必要がある場合です。

+0

チップのおかげで! – clamp

関連する問題