我知道在javascript中我可以迭代一个对象来获取它的所有属性。如果一个或多个属性是方法,是否可以查看方法中的代码而不仅仅是方法名称? E.g。
var a = someobject;
for (property in a) {
console.log(property);
}
是否可以以类似于此的方式获取方法代码?先感谢您。
答案 0 :(得分:2)
是。它确实有效。尝试:
var a = {};
a.id = 'aaa';
a.fun = function(){alert('aaa');}
for (x in a) {
var current = a[x].toString();
if(current.indexOf('function') == 0){
current = current.substring(current.indexOf('{')+ 1, current.lastIndexOf('}'));
}
console.log(current);
}
但它不适用于浏览器本机代码。
答案 1 :(得分:2)
您需要根据standard使用toString
。即:
//EX:
var a = {method:function(x) { return x; }};
//gets the properties
for (x in a) {
console.log(a[x].toString());
}
您也可以使用toSource
,但它是 NOT 标准的一部分。
PS:尝试使用for : loop
可靠地迭代一个对象是非常重要且危险的(for..in
仅迭代[[Enumerable]]
属性,对于一个),尽量避免这样的结构。我会问你为什么这么做呢?
答案 2 :(得分:1)
您可以在函数
上使用toString
方法
即
function hello() {
var hi = "hello world";
alert(hi);
}
alert(hello.toString());
更新:它在JSFiddle中不起作用的原因是因为我忘记在console.log
或alert
- http://jsfiddle.net/pbojinov/mYqrY/
答案 3 :(得分:0)
只要a
是一个对象,您就应该能够使用方括号表示法并通过参数查询与objects属性同名的值。例如:
a[ property ];
如果您记录typeof( property )
,它将返回"string"
,这就是我们想要的。