了解this
2017-05-19 本文已影响6人
饥人谷_hak
全局作用域默认是window
console.log(this)

像这样直接打出来看到当前this指向window
function fn(){
console.log(this)
}

在全局函数里也指向window
在对象中
var obj = {
a:'xxx',
b: function(){
return this.a
}
}

看到在obj 这个对象中 return的 this.a 这个this是obj
绑定this
1.call()
func.call(指定this, 参数1, 参数2, ...)
函数实例的call方法,可以指定函数内部this的指向(即函数执行时所在的作用域),然后在所指定的作用域中,调用该函数。

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