2011-01-14 16 views
0

私はMooToolsクラスシステムを使用しています。完全な継承チェーンを知らなくても、特定のクラスの静的メンバーにアクセスしたいと考えています。私はBaseClassを拡張ChildClass、およびMooToolsでの静的メンバーの継承

BaseClass.foo = function() { /*...*/ }

を持っている場合たとえば、私はChildClass.foo()を呼び出すことができるようにしたいと思います。この目的を達成するために

は、私は次のようにMooToolsの Class方法を修正することを考えています:

function Class(params) 
    // ... 
    // var newClass = ... 

    var parentClass = params.Extends; 
    if (parentClass) { 
     newClass.__proto__ = parentClass; 
    } 

    // ... 
} 

この親クラスを指すように、各クラスのオブジェクトのプロトタイプチェーンを設定します。

上位クラスの静的メンバーがより派生したクラスに隠れている場合は、そのようにしてください。

推奨されていない__proto__の使用にもかかわらず、私はここで正しい軌道に乗っていますか?誰も目障りな問題が見えますか?

(function(){ 

    var original = Class.Mutators.Extends; 

    Class.Mutators.Extends = function(parent) { 
     original.call(this, parent); 

     var members = {}; 
     for (var key in parent) { 
      if (parent.hasOwnProperty(key) && !this.hasOwnProperty(key)) { 
       members[key] = parent[key]; 
      } 
     } 
     this.extend(members); 
    }; 

}()); 

あなたはMark Obcena's bookをチェックアウトする必要があります:

答えて

1

あなたは常に拡張ミューテーターを拡張することができます。

関連する問題