本文介绍了JavaScript里面的this属性。这个属性是理解JavaScript类和继承的重要基础。
this属性表示当前对象,若是在全局做用范围内使用this,则指代当前页面对象window; 若是在
函数中使用this,则this指代什么是根据运行时此函数在什么对象上被调用。 咱们还能够使用apply和call两个全局方法来改变函数中this的具体指向。
先看一个在全局做用范围内使用this的例子:
- < script type="text/javascript">
- console.log(this === window); // true
- console.log(window.alert === this.alert); // true
- console.log(this.parseInt("021", 10)); // 10
- < /script>
函数中的this属性是在运行时决定的,而不是函数定义时,以下:
-
- function foo() {
- console.log(this.fruit);
- }
-
- var fruit = "apple";
-
-
- foo();
-
-
- var pack = {
- fruit: "orange",
- foo: foo
- };
-
- pack.foo();
-
全局函数apply和call能够用来改变函数中this属性的指向,以下:
-
- function foo() {
- console.log(this.fruit);
- }
-
-
- var fruit = "apple";
-
- var pack = {
- fruit: "orange"
- };
-
-
- foo.apply(window);
-
- foo.apply(pack);
-
注:apply和call两个函数的做用相同,惟一的区别是两个函数的参数定义不一样。
由于在JavaScript中函数也是对象,因此咱们能够看到以下有趣的例子:
-
- function foo() {
- if (this === window) {
- console.log("this is window.");
- }
- }
-
-
- foo.boo = function() {
- if (this === foo) {
- console.log("this is foo.");
- } else if (this === window) {
- console.log("this is window.");
- }
- };
-
- foo();
-
-
- foo.boo();
-
-
- foo.boo.apply(window);