本文解析JavaScript中this指针在不同执行环境下的指向规则。全局环境中this指向window;普通函数调用时若未绑定对象则指向window,作为对象方法时指向该对象;通过new调用时指向新创建的对象实例。
JavaScript this指针指向规则
在全局执行环境中使用this,它标识的是Global对象,在浏览器环境下具体表现为window对象。
当在函数执行环境中使用this时,如果该函数没有明显作为非window对象的属性,而仅仅是被定义(无论是否嵌套在另一个函数中),此时函数内的this仍然指向window对象。但如果函数是显式地作为某个非window对象的属性被调用,那么函数中的this就代表该对象本身。
相关代码示例如下:
var o=new Object;
o.func=function()
{
alert((this===o));
(function(){
alert((this===window));
}
)();
}
o.func(); 当通过new运算符来调用函数时,该函数被视为构造函数,此时this指向由构造函数创建出来的新对象。
更详细的可以参考
Javascript this指针