Отражение в JavaScript
Я искал возможность отражения в 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>");
}
}
Результаты:
х (число) = 32
_hello (string) = Hello World
_item (число) = 123,345
привет (функция) = функция () {оповещение ("Привет"); }
до свидания (функция) = функция () {оповещение ("Прощай"); }
Следующая часть моей задачи - создать что-то, что может отражать (если возможно) имя объекта и путь к объекту.
используя этот пример: ...
var x = new Foo.Bar.Test();
Как я могу задуматьсяТестовое задание"от х? Например:
ReflectName(x); //returns "Test";
Кроме того, как я могу отразить обратно путь к х? Например:
ReflectPath(x) //returns Foo.Bar.Test
Возможно ли сделать эти две вещи, используя JavaScript? Я исследовал это, и до сих пор не удалось найти какие-либо жизнеспособные решения.
Я не хочу решения, которое требует жесткого кодирования имени и пути объекта / функции, поскольку это лишило бы смысла использование отражения.