javascript反射查找原型方法,全局范围方法和对象

时间:2011-09-16 15:37:25

标签: javascript reflection function-prototypes prototype-programming

如何找到使用反射定义的原型方法(而不是PrototypeJS)?另外,如何在全局范围内查找所有已定义的对象和方法?

2 个答案:

答案 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
}