[英]Why does `window.console.log(this)` not log the console object?
我只是进入高级上下文实例化,使用原型链等。
我很好奇如何创建window.console
对象,以便函数log
认为其上下文是窗口实例,而不是控制台。 这与Object.create
new
关键字有关,还是绑定/ self = this?
window.console
有一个构造函数(Console),我很好奇,通过Window实例/上下文调用构造函数的最简单方法是什么? 作为参数传递它? 如果Console是一个单独的构造函数,我认为Window将是使用新上下文构造它的那个,而不是说
windowInstance.console.log = function (args) {
}.bind(windowInstance, args);
好看多了,比我想象这样的布局,但不明白怎么this
被路由
var window = new Window();
window.console.log(this); // logs window
function Window () {
// this === window when constructed above
this.console = new Console();
}
function Console () {
this.log = function () {} // where this === window.console but log thinks it's window
}
谢谢
如果你有:
var obj = { hello: "world" };
console.log(obj);
您会为控制台显示该对象感到惊讶吗? 同样,
console.log(this);
记录的值this
,因为它是调用控制台功能之外 。 你不能强迫console.log()
来记录它认为的价值this
是在自己的参照系; API中对此没有任何规定(坦率地说,它不是很有用)。 但是,如果要记录window.console
对象的状态,则可以:
console.log(window.console);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.