由于其运行期绑定的特性,JavaScript 中的 this 含义要丰富得多,它可以是全局对象、当前对象或者任意对象,这完全取决于函数的调用方式。JavaScript 中函数的调用有以下几种方式:作为对象方法调用,作为函数调用,作为构造函数调用,和使用 apply 或 call 调用。
在 JavaScript 中,函数也是对象,因此函数可以作为一个对象的属性,此时该函数被称为该对象的方法,在使用这种调用方式时,this 被自然绑定到该对象。
让我们再一次重申,在 JavaScript 中函数也是对象,对象则有方法,apply 和 call 就是函数对象的方法。这两个方法异常强大,他们允许切换函数执行的上下文环境(context),即 this 绑定的对象。很多 JavaScript 中的技巧以及类库都用到了该方法.
<script type="text/javascript">
function People()
{ //this的作用是创建一个对象的成员变量
//var name = "张三"; 定义的是方法中的局部变量
this.name = "李四";//定义的是属性,说明这个属性属于People创建的这个成员
alert(this.name);
function Person()
{
alert(this.name);
function man()
{
alert(this.name);
}
man.call(this);//通过this实现层层传参数
}
Person.call(this);
}
var p = new People();
alert(p.name);
</script>