在僅客戶端應用程序中,我使用腳本標記一個接一個地加載兩個js文件,並獲取以下注釋中顯示的錯誤:javascript:「this」的值在調試器和實際結果之間有所不同
obj.js
'use strict';
let obj = {};
obj.func1 =() => {
return 'stuff';
}
obj.func2 = (arr) => {
debugger; // in devtools, value of 'this' is obj, as expected
console.log(this); // clicking 'next' button in devtools,
// the object that is actually being printed to
// console is the window object!!!
// javascript, wtf?!?!
debugger;
let myStuff = this.func1(); // fails because window has no 'func1' property
...
...
}
window.obj = obj;
的script.js
'use strict';
obj.func2()
// Uncaught TypeError: this.func1 is not a function
世界爲什麼會發生?爲什麼devtools調試器和瀏覽器中的實際結果之間的'this'值有所不同?
編輯:
請參閱下面的怎麼樣,當我在同時由debugger
斷點被暫停控制檯執行console.log(this)
自己的screentshot,「這個」 是對象(),以及下一個步(相信我,它只是下一步),窗口對象正在打印到控制檯。
https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Operators/this – Creynders
請附上此行的截圖:'調試器; //在devtools中,'this'的值是obj,如預期的那樣。爲什麼我的devtool顯示'this'是'window'對象? – stanleyxu2005
@ stanleyxu2005 IDK,我能夠在OS X上的linux mint和chrome canary(51)上進行Chrome測試版(50)的重新生成。您正在測試哪種瀏覽器版本/操作系統? –