親メソッドは、子メソッドの内部で使用されているかどうかをチェックし、私は子供のクラスはまだそれを呼ばせずに親メソッドを使用している場合に伝える方法がありますかどうかを知りたいと思いました。理想的には、子のメソッドのいずれかがメソッドの定義で親のメソッドを使用しているかどうかを確認するために、親のコンストラクタでチェックを実行したいと思います。Javascriptを - 私は親クラスを拡張し、いくつかのJSを書いて
私は研究のビットをやったとObject.getOwnPropertyNames()
のようなものに遭遇してきたが、私は私は正しい方向に向かってるかはわかりません。例えば
:
class Path {
constructor (name) {
// how can I check if addRelationship have been used? If possible.
this.relationships = {};
this.currentRelationship = '';
this.path = path;
}
addRelationship (relationship) {
// do something
this.currentRelationship = relationship.path;
return this;
}
makePath() {
let path = [this.path];
if(this.currentRelationship) {
path.push(this.currentRelationship)
}
return path.join("/");
}
}
class OnePath extends Path {
// ...
someMethodFromThatRelationship() { }
}
class TwoPath extends Path {
// ...
}
var onePath = new OnePath('one');
var twoPath = new TwoPath('two-path');
class SomeOtherPath extends Path {
one() {
return this.addRelationship(onePath);
}
two() {
return this.addRelationship(twoPath);
}
}
上記の例のアイデアは、私がaddRelationship
は、いずれの方法で参照されているかどうかをチェックし、もしそうなら、one()
とtwo()
が実際に呼び出される前にthis.relationships.one
とthis.relationships.two
を登録することができています。私は意味があると思う。私はこれが可能かどうかを知りたい。
let someOtherPath = new SomeOtherPath('some-other-path');
// now I can call
someOtherPath.relationships.one.someMethodFromThatRelationship();
// and can also call the save method from the extended class
someOtherPath.one().makePath();
// some-other-path/one
// I can also just call
someOtherPath.makePath();
// some-other-path
は、インターフェイスを作成しようとしていますか? –
@KeithHolliday Utlimately、はい。あるいは少なくとも何らかの形のインターフェース。 –
[実際の問題](http://meta.stackexchange.com/q/66377)とは何ですか?子クラスのメソッドの名前を取得するか、実際には 'addRelationship'を呼び出すメソッドだけを取得するだけですか? – Bergi