我在获取 window.error
上的当前对象实例时遇到问题事件。
如果我将此代码放在对象方法之外,我将无法获得 obj
参数,如果我把它放在 class
方法,我无法得到正确的obj
什么时候是 instanceOf
另一个 class
.
例子:
//addTableEvents is a method
addTableEvents: function () {
var obj = this;
window.onerror = function (message, url, lineNumber, colNumber, error, obj) {
var errInfo = {
INSTANCE: obj.tableId,
DATE: window.Date(),
PATH: window.location.href,
STACKTRACE: error.stack,
ENV: window.navigator.userAgent,
};
console.log(errInfo);
obj.logError(errInfo);
return true;
};
如果我使用,例如:
window.onerror = function (message, url, lineNumber, colNumber,error,obj) {
...
};
在全局范围内我无法获得
obj
参数,不用说我需要引发错误的实例。我知道解决方案是在调用、应用或绑定(bind)之间,但需要帮助。
最佳答案
我认为在第一种情况下你不能“使用”'obj',因为它也是函数的一个参数,而不仅仅是一个全局变量。
(还有一个缺失的 };但这可能是一个复制/粘贴错字。)
试试这个:
//addTableEvents is a method
addTableEvents: function () {
var obj = this;
window.onerror = function (message, url, lineNumber, colNumber, error) {
var errInfo = {
INSTANCE: obj.tableId,
DATE: window.Date(),
PATH: window.location.href,
STACKTRACE: error.stack,
ENV: window.navigator.userAgent,
};
console.log(errInfo);
obj.logError(errInfo);
return true;
};
};
关于JavaScript window.onerror 和 this 关键字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39143335/