Sadece istemci tarafında bir uygulamada, birbiri ardına komut dosyası içeren iki js dosyası yüklüyorum ve aşağıdaki yorumlarda görüldüğü gibi hatalar alıyorum:javascript: 'this' değeri hata ayıklayıcı ile gerçek sonuç arasında farklı
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
Neden dünyada zaman olur
? Neden devtools debugger ile tarayıcıdaki gerçek sonuç arasında 'this' değerinde bir fark var?Düzenleme:
Ben debugger
kırılma noktası tarafından duraklatılmasına ederken konsolunda kendim console.log(this)
yürütme olduğumda nasıl aşağıya screentshot See, 'bu' Object() ve bir sonraki adımdır (tam olarak bir adım ileride olduğuna inanıyorum), pencere nesnesi konsola yazdırılıyor.
https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Operators/this – Creynders
bu hattın bir ekran görüntüsü ekleyin: ' ayıklayıcı; // devollerde, 'bu' değeri, beklendiği gibi objedir. Neden devtool'um '' '' 'window' nesnesini gösterir? – stanleyxu2005
@ stanleyxu2005 IDK, OS X'de linux mint ve krom canary (51) üzerinde krom beta (50) ile reprodüksiyon yapabildim. Hangi tarayıcı sürümünü/işletim sistemini test ediyorsunuz? –