Javascript,从静态函数中打印全局对象
Javascript, print the global object from a static function
使用以下代码,如何调用方法my_method
以打印全局对象(窗口)?
MyClass = function() {
this.my_method = function() {
console.log(this);
}
}
var myobject = new MyClass();
这不是一个家庭作业,而是一个我被问到的问题,我无法理解,因为我不懂深层JavaScript。
所以,如果有人能帮助我理解并给我一个解释清楚的答案,我会很高兴的!
您可以将函数绑定到null:
MyClass = function() {
this.my_method = function() {
console.log(this);
}
}
var myobject = new MyClass();
myobject.my_method = myobject.my_method.bind(null);
myobject.my_method(); // this will log the DomWindow object
这是因为当函数的上下文为null或未定义时,this
是全局对象。
来自ECMAScript参考:
- 如果函数代码是严格代码,请将ThisBinding设置为thisArg
- 否则,如果thisArg为null或未定义,请将ThisBinding设置为全局对象
您还可以使用call
和apply
来更改函数的上下文。
var myobject = new MyClass();
myobject.my_method.call(this);
myobject.my_method.apply(this);
如果您不需要永久绑定或希望动态更改上下文,这可能会很好地工作。
相关文章:
- 使用javascript将动态表从一个html页面打印到另一个html页
- 全局变量和全局对象的属性之间有什么区别吗
- JavaScript打印功能使日历停止工作
- 正在全局范围中查找JavaScript函数
- delete关键字在全局变量上的不同行为
- 在javascript函数中设置全局变量
- 如何将getJson的响应保存在全局变量中
- esri javascript异步打印
- 全局对象是属于哪个类的对象
- 文本框不是从Javascript/Asp.net中的对话框中打印出来的
- Javascript全局onclick监听器
- 从Javascript方法返回全局变量
- jQuery/JavaScript在线公文包表单-打印样式表
- 如何打印嵌套对象的所有值
- 在终端中运行 JavaScript 时(使用 rhino),如何使用 print() 函数在一行中打印
- Javascript,从静态函数中打印全局对象
- 为什么Javascript代码打印'未定义'即使变量被声明为全局变量
- 提前打印下拉列表中的全局页脚
- JavaScript全局变量没有打印hello
- 设置下拉菜单值的全局变量在标题前打印