私は現在、javascript ライブラリを作成するのに忙しいです。そのライブラリでは、コンソールに何が行われるかについてのログを提供したいと考えています。
function log () {
if ((window && typeof (window.console) === "undefined") || !enableLogging) {
return false;
}
function currentTime() {
var time = new Date();
return time.getHours() + ':' + time.getMinutes() + ':' + time.getSeconds() + '.' + time.getMilliseconds();
}
var args = [];
args.push(currentTime());
for (var i = 1; i < arguments.length; i++) {
args.push(arguments[i]);
}
switch (arguments[0]) {
case severity.exception:
if (window.console.exception) {
window.console.exception.apply(console, args);
} else {
window.console.error.apply(console, args);
}
break;
case severity.error:
window.console.error.apply(console, args);
break;
case severity.warning:
window.console.warning.apply(console, args);
break;
case severity.information:
window.console.log.apply(console, args);
break;
default:
window.console.log.apply(console, args);
}
return true;
}
上記のコードは、ログ関数を示しています。呼び出されると、少なくとも重大度、メッセージ、およびオプションでいくつかのオブジェクト (IDBTransaction、IDBDatabase などの DOM オブジェクト) を提供します。
log(severity.information, 'DB opened', db);
今私が抱えている問題は、これがメモリリークを引き起こすことです。問題は、渡したオブジェクトが console.log メソッドによってメモリに残ることです。これを回避またはクリーンアップする方法はありますか?