第一种 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需要注意将实参放入数组后 再传入
- bind() 方法需要注意的点就是 它会将改变指向 后需要被接收一下