【译文】JavaScript的 ‘this’关键字

JavaScript ‘this’关键字

‘this’关键字在JavaScript里面非常容易引起误解和错误。和其他语言相比,’this’关键字在JavaScript里面有很多不同。在面向对象语言中,’this’关键字指向类的当前实例。在JavaScript里面,this的值是由函数的调用环境和所处位置决定。在大部分情况,this的值决定于函数是如何被调用的。它在执行期间不能被赋值设定,并且在函数每次被调用的时候都可能不相同。

全局域

在全局域环境使用‘this’关键字,它被绑定到全局对象(浏览器的窗口)

document.write(this);  //[object Window]

当在一个在全局域定义的函数里面使用this的时候,this仍然绑定在全局对象上面,它是从全局域的一个方法创建这个函数开始的。

function foo(){
   return this;
}
document.write(foo());  //[object Window]

上面的foo是全局对象的一个方法创建的。

调用一个函数

如果你正调用一个函数,’this’关键字会保留这个全局对象。

window.meGlobal = "I'm the window object";
function foo() {
  alert(this.meGlobal); // I'm the window object
  alert(window === this); // true
}
foo();

在构造函数里面

当函数被用作一个构造函数使用时(用new关键字调用),在函数内的this指向被创建的新对象。

var globalVar = "I am Global";
function callMe()
{
    this.globalVar = "inside function";
}
var obj1 = new callMe(); //adds globalVar to obj1
document.write(obj1.globalVar); //call me

JavaScript教程



此条目发表在博客, 服务器, 程序开发, 计算机安全分类目录,贴了, , , , , , 标签。将固定链接加入收藏夹。