this指向的改变方法

第一种 call()方法
写法:函数.call(this, 内容一,内容二)
第一个参数要指向的 后面的参数为函数执行的时候的实参
列子
window.str = ‘window’;
var a = { str : ‘a’}

function fn(){
console.log(this.str);
}

fn.call(); //window
fn.call(window); //window
fn.call(a); //a

第二种 apply()方法
写法::函数.apply(this, 【内容一,内容二】)
ps:其实和call基本一样 就是函数执行的实参传入方式不一样 call是直接传入 而apply方法传入的是数组
列子

window.str = ‘window’;
var a = { str : ‘a’}

function fn(){
console.log(this.str);
}

fn.apply(); //window
fn.apply(window); //window
fn.apply(a); //a

第三种 bind()方法
写法: var new = 函数.bind(this);]

window.str = ‘window’;
var a = { str : ‘a’}

function fn(){
console.log(this.str);
}

fn();//window
var fn1 = fn.bind(a);
fn1() //a

总结
call()和aplly()方法基本一致 只是注意使用 传入实参的时候 call 直接传入就可以 apply需要注意将实参放入数组后 再传入

猜你喜欢

转载自blog.csdn.net/weixin_44275692/article/details/89848749