以html格式显示对象

时间:2011-06-11 17:22:01

标签: javascript jquery

我正在尝试编写一个对象资源管理器,向用户显示对象的属性和值。我的想法是,能够向下钻取以查看对象内的对象,单击超链接以检查方法的源代码,否则查看属性值。

这是我到目前为止所做的事情(jsFiddle)。

问:帮忙!我不知道我在做什么!我注意到的一件事是我显然没有获得hasOwnProperty为true的任何属性。另一件事是我需要函数递归。另一个是:我想我记得在JavaScript函数的某处可以获得JavaScript函数的文本。

所以,回答你的问题:“问题是什么?”我想我可以说“你能帮我写一下这个通用的JavaScript对象浏览器,可能是一个jQuery插件吗?”

2 个答案:

答案 0 :(得分:1)

你的问题 非常笼统。至于你的两个具体要点:

为了使你的函数递归,我相信你可以简单地将这个代码块从你的'bodyLog'函数复制到你已经评论过递归的地方。当你将它传递给你的递归调用时,你会想要添加一个'level'。

// $(obj).each(function(index,Element) { // EDIT shouldn't need this iteration, you're inside the loop
    result += showObjectsMethodsAndValues(Element,level+1,true);
    result += showObjectsMethodsAndValues(Element,level+1,false);
//});

获取函数的字符串主体的方法只是在方法对象上调用'.toString()'。所以如果你这样做:

var myFun = function(a, b) {
   return a+b;
};

alert(myFun.toString());

您将看到打印出的功能正文。对于内置对象,您可能会看到“[native code]”作为函数的主体,而不是真正的javascript代码。

你没有看到任何hasOwnProperty属性的原因是我怀疑jQuery对象有什么。所有这些属性都可能存在于它的原型对象中。试试这个:

var myObj = {foo: 1, bar: 2};
myObj.prototype = {baz: 3};

然后在myObj上调用你的函数。 Foo和bar应该返回hasOwnProperty为true,baz将返回false。我相信所有jQuery的属性都存在于它的原型对象中,所以它们都会返回false。

答案 1 :(得分:1)