以下のスニペットをご覧ください。 ...
の代わりに書くことができる関数はありますか?それは別の関数で再利用できますか?おそらくvar route = this.show.fullyQualifiedName
のようなものでしょうか?JavaScript:内部から完全修飾の関数名を取得していますか?
5
A
答えて
3
いいえ、少なくとも「リフレクション」スタイルの操作は使用していません。同じオブジェクト(参照)多くオブジェクト内に含まれる可能性があるため
オブジェクトは、それらが含まれていているオブジェクトの名前ではなく、少なくともの知識がありません。あなたがそれを行うことができ
唯一の方法は:、そのオブジェクトのパスが含まれている各オブジェクトに新しい_route
プロパティを置く
function fillRoutes(obj) {
var route = obj._route || '';
for (var key in obj) {
if (key === '_route') continue;
var next = obj[key];
next._route = route + '/' + key;
fillRoutes(next);
}
}
を例えばを最上位のオブジェクトで開始し、内側にあなたのように動作するようになります。
1
は、あなたが言ったオリオン座ゼータ星のように、再帰的な検索を行うことはできませんを参照してください、それはあなたのオブジェクトのサイズに応じて多少遅くなる可能性が、あなたは、トップダウンの検索を行うことができます。オブジェクトのプロパティをループし、子があるかどうかを確認します。それが子供を持っている場合は、それをループします。チェーンの終わりに達し、あなたの機能が見つからない場合は、次の子に移動して検索を続行します。
今すぐサンプルを書く時間がありませんが、これから何かを一緒に作れますように。
関連する問題
- 1. JavaScriptの完全修飾名
- 2. メソッドの完全修飾名を取得
- 3. クラスの完全修飾名を取得しますか?
- 4. libclangで完全修飾の関数名を取得するにはどうしたらいいですか?
- 5. コントローラとアクションの完全修飾URLを取得しますか?
- 6. Javadoc要素から完全修飾型の名前を取得できない
- 7. コンパイル環境でクラスの完全修飾名を取得しますか?
- 8. 完全修飾メソッド名からの引数の分割
- 9. ANTLR4エラーリスナーで完全修飾ファイル名を取得する方法
- 10. Tornadoのreverse_urlから完全修飾URL
- 11. sqliteはビュー内のフィールド名を完全に修飾しています
- 12. MySQLの、完全修飾名のinspite
- 13. reference Request.Browser完全修飾名のMVC
- 14. 自体の内部から関数名を取得します
- 15. wsadmin adminApp.update java.net.UnknownHostException完全修飾ホスト名
- 16. 完全修飾ドメイン名とポート番号
- 17. DelphiのWindowsで完全修飾ドメイン名を取得する方法
- 18. Roslynの完全修飾ネームスペースメタデータエラー
- 19. Exchangeサーバーで完全修飾メールボックスサーバー名を取得する方法は?
- 20. Asp.net MVCはアクションメソッドへの完全修飾URLを取得
- 21. パッケージ名パス - 完全修飾後のパスが長すぎます
- 22. Perl 6:内部から関数の名前を取得する
- 23. 完全修飾静的メンバー変数のあいまいさ
- 24. BIRTレポートで完全修飾オブジェクト名を取得するにはどうすればよいですか?
- 25. NSUserDefaults - アプリのキー名を完全修飾する必要がありますか?
- 26. Javaクラスの完全ソースコードを含む文字列から完全修飾クラス名を抽出
- 27. Assembly.GetExecutingAssembly()を使用して完全修飾アセンブリ名を取得できません。GetName()
- 28. 内部の依存関係のクラス修飾名の競合
- 29. ウェブサイトを取得完全に修飾されたURL PHPで安全に?
- 30. UMLクラス図で完全修飾型名を使用する
トップダウン検索はできません。私は 'show'の完全な道を提供していない限り、その試合が見つかったとき、どのようにして検索を知るでしょうか?そして、 'show'の完全なパスを提供すれば、それは' show'のようなメソッドの中から 'route'値を取得する単一の関数を使用する点を打ち消します。 – barfoo
これまで関数を呼び出す前に、再帰的にツリーを塗りつぶさなければなりません。 – Alnitak