1.call方法
// call方法调用函数,并且改变this的值this由windows改成了ifan
const ifan = {
age: 18
}
function kunkun() {
console.log(this);
}
kunkun.call(ifan)
// this由windows改成了ifan
2.apply方法
// 语法:fun.apply(thiaArg,[argsArray]) 跟的参数必须是数组
const ifeng = {
hoppy: 'pc'
}
function kunkun(x, y) {
console.log(this);
console.log(x + y);
}
kunkun.apply(ifeng, [1, 2])
// 因为本身就是再调用函数,所以返回值就是函数的返回值
// 3.bind方法,bind方法不会调用函数,但是可以改变this指向
// 语法:fun.bind(thisArg,arg1,arg2)
const ikun = {
age: 18
}
function kunkun() {
console.log(this);
}
kunkun.bind(ikun)
// 这里我们发现控制台没有打印this,
// 虽然我们调用了这个函数, 因为bind方法不会调用函数,
// 但是可以改变this指向,
// 此时的this已经指向了ikun这个对象了, bind方法返回值是个函数
const fun = kunkun.bind(ikun)
fun()
// 这时我们调用这个fun函数,发现打印了这个this this指向了ikun