Я понимаю, что вы уже приняли ответ, но это заняло у меня время! Из вашего вопроса я думал, что вы, возможно, не захотите изменить класс «Блины». Итак, вот попытка избежать этого.
Эта функция будет искать все объекты в указанном вами объекте и подсчитывать все экземпляры вашего типа.
// Usage:
searchObjectForType(window, Pancake); // returns a number.
function searchObjectForType(obj,type){
// Keep track of objects in stack so we don't overflow by searching into the same objects;
var stackObjs = [];
function recursiveProbe(obj){
var foundCount = 0;
var objType;
// Some types will throw (iframes/nulls/..)
try{
objType = obj.toString();
}
catch(err){
return 0;
}
// Skip document/previous objects as we know they won't have any.
if(typeof obj === "string" || stackObjs.indexOf(objType)>=0 || obj===document){
return 0;
}
else{
stackObjs.push(objType);
}
for (var i in obj){
var prop = obj[i];
if(prop instanceof type){
foundCount++;
}
else{
foundCount += recursiveProbe(prop);
}
}
// Remove this type from stackObjs so we can search future types.
stackObjs.splice(stackObjs.indexOf(obj.toString()),1);
return foundCount;
}
return recursiveProbe(obj);
}
Уверен, что есть случаи, когда это не удается, поэтому отзывы оцениваются!
Вы не могли бы внести ваш отзыв? –
Уверен, что вам придется делать это вручную ... – James
Возможный дубликат [Как я могу подсчитать экземпляры объекта?] (Http://stackoverflow.com/questions/12378909/how-can-i-count -the-instance-of-the-object) –