Javascript:通过已定义的函数打印globalobject

Javascript:通过已定义的函数打印globalobject,javascript,Javascript,我试图通过此打印对象打印全局对象窗口,而不使用变量window Print = function(){ this.print = function() { console.log(this); } } var print = new Print(); 我找到了调用窗口的方法: var globalObject = (function(){return this;})(); 现在,如何使用变量“printer”打印此globalObject 编辑:我必须使用已定义的打

我试图通过此打印对象打印全局对象窗口,而不使用变量
window

Print = function(){
    this.print = function() {
    console.log(this);
    } 
}
var print = new Print();
我找到了调用窗口的方法:

var globalObject = (function(){return this;})();
现在,如何使用变量“printer”打印此
globalObject

编辑:我必须使用已定义的打印功能。我无法修改打印对象


感谢您的帮助。

对代码进行如下编辑:

Print = function(globalObject){
    this.print = function() {
    console.log(globalObject);
    } 
}
var print = new Print(globalObject);

print.print() // Prints window object

这种模块化模式将帮助您

var globalObj = (function(w){

  return {
    printWindowObj: function(){
      console.log(w);
    }
  }

})(window);


globalObj.printWindowObj();

当您在
print
方法中打印
this
时,您需要一种方法来更改该函数中使用的
this

一种方法是使用which将第一个参数作为
this
传递给函数

var globalObject=(函数(){returnthis;})();
打印=函数(){
this.print=函数(){
console.log(this);
} 
}
var print=new print();
print.print.call(globalObject);

//在控制台中打印'window'属性需要一段时间,您的
print
函数会记录
对象。通常,这是包含它的对象—在本例中为打印

如果要打印
全局对象
,并在
打印
中将其称为
,则必须手动绑定

类似这样的方法会奏效:

Print = function(globalObject){
    this.print = function() {
        console.log(this);
    }.bind(globalObject);
}
var print = new Print(globalObject);
print.print(); // globalObject
这样做的目的是创建
Print
,引用您的
globalObject
,然后将其绑定到
Print
函数

您可以随意使用它

只需省略新的:

 Print();
 print();

在不修改打印对象的情况下,是否可以设想一种解决方案?这是我真正的问题。我必须使用已定义的打印功能。谢谢你的回答,我不明白。你能详细说明一下吗?globalObject可能是未定义的。在不修改打印对象的情况下,可以想象一个解决方案吗?这是我真正的问题。我必须使用已定义的打印功能。感谢您的回答。表示您不想使用全局窗口。打印功能OP表示他们“必须使用已定义的打印功能”非常好。非常感谢你!