2016-08-25 93 views
0

我有一個問題,以獲得當前對象實例在window.error事件。JavaScript的window.onerror和這個關鍵字

如果我把這個代碼的對象方法外,我不能得到obj參數,如果我把它放在class方法中,是另一種classinstanceOf的時候,我不能得到正確的obj

例子:

//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參數,不用說,我需要trows錯誤的實例。我知道解決方案在通話,應用或綁定之間,但需要幫助。

+0

你應該在你的應用程序'windo.onerror'僅使用一次是全球功能。 – GibboK

回答

0

我認爲在第一種情況下,您不能「使用」'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; 
    }; 
}; 
+0

謝謝所有......但這不是正確的答案 –