这是JavaScript的神秘行为。这是我的使用错误还是一些错误?
JavaScript代码
function test(){
var self = this;
self.func1 = function(){
debugger; // here self == Window
}
debugger; //here self == test func
self.func1();
}
var t = new test();
我向JSfiddle提供了你可以自己尝试的方法:
https://jsfiddle.net/stanislavmachel/f44zbvvr/8/
有人可以解释为什么自我变量的背景会在调用后错过吗?
答案 0 :(得分:2)
这不是错误,你只是错误地阅读调试器。
JS引擎注意到函数func1
不使用变量self
,因此优化度量为doesn't include it in the context object。您在调试器中看到的是global self
。
如果您在函数中使用self
变量,例如console.log(self)
,您还会在调试器的闭包列表中看到它。请参阅https://jsfiddle.net/f44zbvvr/9/。