JavaScript window.onerror 和 this 关键字

标签 javascript error-handling window

我在获取 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/

相关文章:

javascript - 使用extendscript更改对象的颜色

c# - 公共(public)实例变量访问错误: "An object reference is required for the non-static field, method, or property..."

ruby-on-rails - Rails 错误消息和重定向

javascript - 使用文档对象时是否假定 window.document ?

Javascript动态下拉菜单我也可以在按钮中看到它

javascript - 隐藏的幻灯片不会在隐藏容器内扩展全宽

javascript - 无法在 node-ftp 模块中取消 Node 化方法

python - 错误异常应继承基本Python错误对象

browser - 从外部应用程序枚举浏览器选项卡

window - “使用System.Windows.Interop;”它在哪里?