函数内部的this对象 – 学习画板

首页 » JavaScript » 函数内部的this对象

函数内部的this对象

函数体内部的另一个特殊对象是this,其行为与java和C#中的this大致类似。换句话说,this引用的是函数已执行操作的对象——或者也可以说,this是函数在执行时所处的作用域。来看下面的例子:

window.color = "red";
var o = {
    color: "blue"
};

function sayColor() {
    alert(this.color);
}
sayColor(); //"red"
o.sayColor = sayColor;
o.sayColor(); //"blue"

上面这个函数sayColor()是在全局作用域中定义的,它引用了this对象。由于在调用函数之前,this的值并不确定,一次this可能会在代码执行过程中引用不同的对象。当在全局作用域中调用sayColor()时,this引用的全局对象window;换句话说,对this.color求值会转换成对window.color求值,于是结果就返回了“red”。而当把这个函数赋给对象o并调用o.sayColor()时,this引用的是对象o,一次对this.color求值会转换成对o.color求值,结果就返回了“blue”。

函数的名字仅仅是一个包含指针的变量而已。因此,即使是在不同的环境中执行,全局的sayColor()函数与o.sayColor()指向的仍然是同一个函数。

此文章发表在 JavaScript 标签为 . 将固定链接加入收藏.