繁体   English   中英

为什么`window.console.log(this)`不记录控制台对象?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM