java.lang. Runtime.totalMemory () даст Вам необходимую информацию - http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Runtime.html
e-satis,
Единственный способ сделать это - использовать метод call или apply для установки правильного «контекста».
Чтобы решить вашу проблему, измените функцию панели, чтобы она принимала функцию обратного вызова, а также область действия, применяемую к этой функции обратного вызова.
function bar(callback, scope)
{
callback.apply(scope);
}
bar(ObjectFromOtherLibIAmNotSupposedToknowAbout.foo, ObjectFromOtherLibIAmNotSupposedToknowAbout);
В качестве альтернативы вы можете использовать метод привязки.
Function.prototype.bind = function(context) {
var fun = this;
return function(){
return fun.apply(context, arguments);
};
};
Теперь вы можете оставить функцию панели нетронутой и изменить вызывающий код, чтобы он выглядел так:
bar(ObjectFromOtherLibIAmNotSupposedToknowAbout.foo.bind(ObjectFromOtherLibIAmNotSupposedToknowAbout));
РЕДАКТИРОВАТЬ:
Как я отмечал в комментарии, это ответственность вызывающего кода за передачу правильной функции обратного вызова. Ваша функция 'bar' не может определить, какой диапазон использовать, точка.
Возьмем это для примера,
var LibObject = { foo: function() { //use this inside method } };
var fooFunction = LibOjbect.foo;
bar(fooFunction);
Как вы собираетесь выяснить, какой должна быть область действия? Теперь вам нечего «разбирать», и вы не можете изменить функцию «bar», чтобы это работало.