2011-04-18 115 views
1

在下面的代碼中,有兩個類,一個是Node,另一個是Btree。如果在節點上調用split()實例,那麼比我想創建新節點時將其另存爲父節點,並更改Btree的根節點。子類如何獲取超類的實例變量?

節點如何訪問Btree.root? 我必須使用類繼承嗎? (此代碼是不完整的代碼,所以可能會有一些錯誤......雖然我只是想獲得它的一個想法)

Node = function(dimension,root){ 
     this.root = root; 
     this.parent = null; 
    } 

    Node.prototype.split = function(
     var tmp = new Node(); 
     if(!this.parent){ 
      var soon_to_be_root = new Node(); 
      this.parent = soon_to_be_root; 
     } 
    } 
    Btree = function(dimension){ 
     this.d = dimension; 
     this.root = new Node(dimension,true); 
    } 

回答

0

如果B-樹是一個單獨的對象,則:

var soon_to_be_root = new Node; 
Btree.root = soon_to_be_root; 

如果Btree是一個類,並且您有很多它們的實例,那麼您需要將它們關聯起來。一個節點「有一個」Btree? Btree是否有「節點?如果其中任何一個都是正確的,那麼當構造另一個的實例時,您應該傳遞一個實例。

另一方面,如果「節點」是「Btree或Btree」是「節點」,則繼承是適當的。