当前位置:编程学习 > JAVA >>

JavaScript之this

在JavaScript中,this是与运行时的执行环境绑定的。也就是说,在声明一个函数时,我们是无法确定其this的含义的。只有当真正调用该函数时,this才会被该函数所在的作用域替换。我们看一下下面这个例子。

1 var name = "Peter";
2 function speak() {
3  alert(this.name + " speak");
4 }
5 speak();
      在上面的代码中,我们首先声明了一个函数speak,然后调用了该函数。由于speak函数是在全局作用域window中调用的,故this指向window。在全局作用域window中的name变量值为Peter,故输出为:Peter speak。再来看看下面这段代码的输出。

1 function Person() {
2  this.name = "Sam";
3  this.speak = speak;
4 }
5 var person = new Person();
6 person.speak();
      首先声明了一个构造函数Person,并为其添加了属性和方法,接下来创建了Person类型的一个对象,再调用其speak方法。此时,speak方法是在person对象的作用域中调用的,故this是指向person对象的,输出为:Sam speak。最后,我们来看下使用call或apply时程序会输出什么。

1 var obj = new Object();
2 obj.name = "Tom";
3 speak.call(obj); // Person.apply(obj);
      call和apply方法是作用在函数上的,call和apply方法的第一个参数指明了调用函数时的this。于是,调用speak函数时,this指向了obj对象,故输出为:Tom speak。

 

作者  胡健

补充:web前端 , JavaScript ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,