如何找到使用反射定义的原型方法(而不是PrototypeJS)?另外,如何在全局范围内查找所有已定义的对象和方法?
答案 0 :(得分:2)
for...in
一直沿着原型链传播,它没有任何特定的顺序,但它应该遍历你正在寻找的所有属性......
for ( var property in obj ) {
//obj[property];
}
如果您正在寻找仅继承(通过原型)成员,请添加hasOwnProperty()
支票...
for ( var property in obj ) {
if ( ! obj.hasOwnProperty(property) ) {
//obj[property] is an inherited property...
}
}
另外,我从未尝试过这个,但是,使用window
,我相信你会找到你想要的......
for ( var property in window) {
//window[property];
}
答案 1 :(得分:1)
迭代所有原型属性(包括继承的属性):
var prototypeData = Object.getPrototypeOf(soomething);
for(var key in prototypeData) {
// prototypeData[key] is a prototype value
}
要查看所有已定义的对象,请以相同的方式迭代window
:
for(var key in window) {
// window[key] is a globally defined value
}