我想知道你对我制作的一个函数的看法,它包装了一个对象的每个方法,添加了“try catch”处理程序来记录服务器端的 JavaScript 错误。
window.onerror
由于此安全限制,我不想使用,并且我的脚本将托管在 CDN 上的不同域上。
/*
* object: Object to be wrapped
* errorHandler: Instance of ErrorHandler Object
*/
function addLog(object, errorHandler) {
var name, method;
for (name in object) {
method = object[name];
if (typeof method === "function") {
object[name] = function(method, name) {
return function() {
try {
return method.apply(this, arguments);
} catch (ex) {
ex.message += "; method: '" + name + "'";
errorHandler.addToStack(ex.message);
throw ex;
}
};
}(method, name);
}
}
return object;
}
errorHandler.addToStack
是自定义对象上的一种方法,它使用 Ajax 消息将错误报告异步发送到服务器。
我想用这个函数包装在我的应用程序上实例化的每个对象,但我不确定是否:
- 这是一个不好的做法吗?
- 它有性能问题吗?
- 有没有更好的方法来做到这一点?
提前致谢!