Web前端之路

JS中this的使用

2016-12-24  本文已影响14人  熊妹妹

this是JavaScript中的关键字,指向调用函数的对象。下面分几种场景分析。

全局函数内

function test(){
    alert(this);
  }

this指向的是window对象,所以在这个方法内可以直接访问到所有的全局变量。

js对象内

var obj = {}; 
obj.fun = function(){ 
        alert(this); 
    }; 

this指向的是obj对象

构造函数内

function test(){
    alert(this);
  }
var obj = new test();

this指向obj对象

apply,call,bind

apply和call都是改变函数体内部this的指向。第一个参数都是this指向的对象,传空就是window对象,第二个开始参数只是格式不同。
bind也可以改变函数体内this指针。调用bind方法会生成一个新的函数。
当你希望改变上下文环境之后并非立即执行,而是回调执行的时候,使用 bind() 方法。而 apply/call 则会立即执行函数。

其他方式

前面提到用bind等方式修改函数体内的this指向,ES6的语法提供了两种方式可以达到同样的效果

=> 箭头函数
箭头函数没有它们自己的 this,箭头函数中的 this 值始终来自闭包所在的作用域。

:: 绑定操作符

::操作符会将左值和右值(一个函数)进行绑定,从而可以达到修改方法调用者同时也是this值的效果。

上一篇 下一篇

猜你喜欢

热点阅读