2011-02-09 15 views
0

私は、同じタイプのオブジェクトが格納されているツリーを作成する配列(「children」と呼ばれる)を含むカスタムオブジェクトを持っています。
のは、それがそのように見えるとしましょう:javascriptでツリートラバーリングメソッドを使用してオブジェクトを拡張する

function CustomObject(){ 
    if (this instanceof Topic) { 
    this.text = "Test"; 
    this.children = []; 
    } else 
     return new CustomObject(); } 

さて、私は深さでそのツリーのすべての要素に、引数として与えられ、他の機能を実行します。このオブジェクトに「FORALL」メソッドを追加したいと思いますファーストファッション。それを行う最良の方法は何ですか?

答えて

1

これは何か?

CustomObject.prototype.forAll = function(func) { 
    // process this object first 
    func(this); 

    // then process children 
    for (var i = 0; i < this.children.length; i++) 
    this.children[i].forAll(func); 
} 
+0

残念ながら、それはうまくいかないようです。最初の要素でのみ実行されたように見えますが、エラーで終了します。ここで試すことができます:http://dl.dropbox.com/u/118505/psychojs/p.html –

+0

@Piotr:あなたのエラーはここにあるようです: 'map.centralTopic.forAll(get_text())' - 'get_text()'はすぐに関数を呼び出しますが、関数オブジェクトを 'forAll'に渡す必要がありますので、' map.centralTopic.forAll(get_text) 'を実行してください。 – casablanca

+0

はい!今私はそれを得る!ありがとう。 –

関連する問題