Firebug控制台范围。为什么不是“这个”总是一样的?不是所有时间都是“窗口”吗?Firebug控制台窗口范围。为什么不是“这个”总是一样的?
6
A
回答
3
的this
在控制台的值将是一样的this
代码当前正在执行的价值。试想一下: -
function outer()
{
// this is window
var x = {n:12};
var fn = function()
{
// this is object {n:12}
alert(this.n);
}
fn.call(x);
}
...
<img src="thing.gif" onclick="outer()" />
如果你把在x = {n:12}
行一个破发点,切换到控制台,您会发现this
是窗口。但是,当您步入alert
行时,控制台中的this
是x
变量所持有的对象。 IOW在执行上下文中的this
与控制台之间没有区别。因此,您可以在调试时使用控制台调整变量和属性的值。
2
在直接调用而不 明确所有者对象功能,使的此的 值是默认 对象(在浏览器窗口)。
在使用该方法 调用语法调用的函数,像
objname.myFunction()
或objname['myFunction']()
,导致要OBJNAME的这个 值。
查看更多ABOT调用函数在JavaScript
+0
这个答案准确,因为它实际上并没有解决问题,因为它涉及到控制台的行为。 – AnthonyWJones 2009-11-26 13:55:31
2
的this
关键字总是指函数的所有者被调用。你可以在here上阅读清楚而详细的解释。
从我这个图片上面链接的文章中,我想解释它最清楚:
相关问题
- 1. Javaw仍然创建一个控制台窗口;为什么是这样?
- 2. 为什么总是这样?
- 3. 什么是Zend的控制台?你什么时候使用这个控制台?
- 4. 这个对象的范围是什么
- 5. 为什么ConnectionString设置的范围总是被强制为“Application”?
- 6. 窗口的目的是什么?在控制台中$?
- 7. 而不是这个窗口的主干范围
- 8. MSVC++不止一个控制台窗口
- 9. 为什么WPF窗口总是得到默认样式?
- 10. 保持一个控制另一台总是在Windows窗体.NET
- 11. 为什么范围$ apply()调用$ rootScope。$ digest()而不是这个。$ digest()?
- 12. 这是为什么不打印到控制台
- 13. 这指的是Angularjs中另一个控制器的$范围
- 14. VSCode是否有像Sublime Text控制台这样的控制台?
- 15. 为什么[范围(10)]和列表(范围(10))不一样?
- 16. 这些变量的范围是什么?
- 17. 是否有可能使一个Firebug的控制台自动化?
- 18. 是否有Firebug控制台-vsdoc.js?
- 19. 为什么这个窗口不可见?
- 20. 这个窗口为什么不居中?
- 21. WatchKit:什么是“Kermit”,这个控制台日志语句是什么意思?
- 22. iOS - 这个UIPageViewController是由UISegmentedControl控制的,还是这是什么?
- 23. 为什么窗口范围内的调用函数与对象范围不同
- 24. 为什么IE8不是这样的JS?
- 25. 这个控制台错误的解决方案是什么?
- 26. 这是什么iOS控制?
- 27. 这是什么控制?
- 28. 这是一个什么样的关键?
- 29. “窗口”总是在JavaScript范围链的顶部?
- 30. 为什么Angular(1.5)组件总是有一个孤立的范围?
谢谢你的回答..但是,一个问题:如果我没有陷入断点,“这个”可以不是控制台中的窗口吗? – 2009-11-27 01:13:04