Отражение JavaScript для поиска методов-прототипов, методов и объектов глобальной области - PullRequest
1 голос
/ 16 сентября 2011

Как я могу найти методы-прототипы (не PrototypeJS), которые были определены с помощью отражения? Кроме того, как найти все определенные объекты и методы в глобальной области видимости?

Ответы [ 2 ]

2 голосов
/ 16 сентября 2011

for...in проходит весь путь вниз по цепочке прототипов, он не гарантирует какой-либо конкретный заказ, но должен проходить через все свойства, которые вы ищете ...

for ( var property in obj ) {
    //obj[property];
}

Если вы ищете только унаследованных (через прототип) членов, добавьте hasOwnProperty() check ...

for ( var property in obj ) {
    if ( ! obj.hasOwnProperty(property) ) {
        //obj[property] is an inherited property...
    }
}

также, я никогда не пробовал это, но, используя window, я полагаю, вы найдете то, что ищете ...

for ( var property in window) {
    //window[property];
}
1 голос
/ 16 сентября 2011

Чтобы перебрать все свойства прототипа (включая унаследованные):

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
}
...