私はJavaScriptでの反映の可能性を調査してきました。私はすでに、次のように、オブジェクト/関数のメンバーを一覧表示できる単純なリフレクターを持っています。
window["Foo"] = {
"Bar": {
"Test": function () {
this.x = 32;
this._hello = "Hello World";
this._item = 123.345;
this.hello = function() {
alert("hello");
};
this.goodbye = function() {
alert("goodbye");
}
}
}
}
$(document).ready(function () {
var x = new Foo.Bar.Test();
Reflect(new Foo.Bar.Test());
});
function Reflect(obj) {
for (var item in obj) {
$("body").append(item + "(" + typeof obj[item] + ") = " + obj[item] + "<br />");
}
}
結果:
x(数値)= 32
_hello(string)= Hello World
_item(number)= 123.345
hello(function)= function(){alert( "hello"); }
goodbye(function)= function(){alert( "goodbye"); }
私の挑戦の次の部分は、オブジェクト名とオブジェクトへのパスを(可能であれば)反映できるものを構築することです。
この例を使用して:..。
var x = new Foo.Bar.Test();
xから「テスト」を反映するにはどうすればよいですか?例えば:
ReflectName(x); //returns "Test";
また、xへのパスをどのように反映できますか?例えば:
ReflectPath(x) //returns Foo.Bar.Test
JavaScriptを使用してこれら2つのことを行うことは可能ですか?私はこれを調査しましたが、これまでのところ実行可能な解決策を思い付くことができませんでした。
オブジェクト/関数の名前とパスをハードコーディングする必要があるソリューションは必要ありません。これは、リフレクションを使用するポイントを無効にするためです。