了解this

2017-05-19  本文已影响6人  饥人谷_hak

全局作用域默认是window

console.log(this)
20170519105959.png

像这样直接打出来看到当前this指向window

function fn(){
    console.log(this)
}
20170519113631.png

在全局函数里也指向window

在对象中

var obj = {
    a:'xxx',
    b: function(){
        return this.a
    }
}
20170519121020.png

看到在obj 这个对象中 return的 this.a 这个this是obj

绑定this

1.call()

func.call(指定this, 参数1, 参数2, ...)

函数实例的call方法,可以指定函数内部this的指向(即函数执行时所在的作用域),然后在所指定的作用域中,调用该函数。


0170519150407.png

2.apply()

func.apply(指定this, [参数1, 参数2, ...])

apply方法的作用与call方法类似,也是改变this指向,然后再调用该函数。唯一的区别就是,它接收一个数组作为函数执行时的参数

3.bind()
bind方法用于将函数体内的this绑定到某个对象,然后返回一个新函数。

var add = function (x, y) {
  return x * this.m + y * this.n;
}

var obj = {
  m: 2,
  n: 2
};

var newAdd = add.bind(obj, 5);

newAdd(5)

bind方法除了绑定this对象,还将add函数的第一个参数x绑定成5,然后返回一个新函数newAdd,这个函数只要再接受一个参数y就能运行了。

ES6 函数

()=>{}

这种函数不会改变this

上一篇 下一篇

猜你喜欢

热点阅读