为什么' window.console.log(this) '不记录控制台对象
Why does `window.console.log(this)` not log the console object?
我正在进入高级上下文实例化,使用原型链等。
我很好奇window.console
对象是如何创建的,这样的函数log
认为它的上下文是窗口实例,而不是控制台。这是与Object.create
的new
关键字,或绑定/自我=这吗?
window.console
有一个构造函数(控制台),我很好奇调用构造函数的最干净的方式,传递窗口实例/上下文将是什么?把它作为参数传入??如果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);
相关文章:
- 如何在javascript中记录对象时强制使用toString
- 循环浏览JavaScript对象并记录其属性
- 在对象数组中添加具有相同名称的产品记录的价格
- 如何使用Immutable.js从javascript原始对象创建记录映射
- 什么是声明性环境记录,它与激活对象有何不同
- 错误:'历史记录.适配器'为null或不是对象
- 日志记录功能/对象名称's在函数堆栈内的javascript中
- 如何读取mysql表记录并存储在javascript对象中
- 使用单引号(撇号)转义将活动记录对象解析为 json
- JSDoc:如何记录父“类”的“选项”对象文字
- 如何从 javascript 对象中删除记录
- 在新的 Array Javascript 中对对象中的部分重复对象进行计数和记录
- 控制台.用box2d记录对象速度
- JavaScript获取浏览器特定的历史记录对象
- 为什么在控制台上记录对象引用时会显示一个整数
- 记录对象状态以进行序列化
- 如何记录对象属性
- 如何在JSDOC中记录对象数组
- Javascript将图像存储在数组中的对象中,在console.log()中,但在记录对象时
- 如何在不调用对象的toString()方法的情况下记录对象