call()方法 (会自调用一次)
fn.call(目标对象) 将函数的this指向某个特定的对象,并且调用一次这个函数;call方法从第二个参数开始就是给函数的实参
// call()方法
function f1(a,b,c) {
console.log(this) //window ==> obj
console.log(a+b+c)
}
var obj={
uname:'张三'
}
// fn.call(目标对象) 将函数的this指向某个特定的对象,并且调用一次这个函数;call方法从第二个参数开始就是给函数的实参
f1.call(obj,10,20,30) //调用f1函数 打印60
apply()方法 (会自调用一次)
apply方法第一个参数与call方法一致,都是改变this指向的目标对象跟call方法的区别就是第二个参数是数组,数组里面就是函数本身需要的参数
// apply()方法
function f1(a,b,c) {
console.log(this) //window ==> obj
console.log(a+b+c)
}
var obj={
uname:'张三'
}
// apply方法第一个参数与call方法一致,都是改变this指向的目标对象
// 跟call方法的区别就是第二个参数是数组,数组里面就是函数本身需要的参数
f1.apply(obj,[10,20,30]) //====> 调用f1 打印60
bind()方法(不会自调用,需自己调用)
bind方法传参的值和call方法是一致的,区别在于call会直接调用,但是bind不会直接调用该方法,而是返回一个该方法的复制
// bind()方法
function f1(a,b,c) {
console.log(this) //window ==> obj
console.log(a+b+c)
}
var obj={
uname:'张三'
}
// bind方法传参的值和call方法是一致的,区别在于call会直接调用,但是bind不会直接调用该方法,而是返回一个该方法的复制
var fn=f1.bind(obj,10,20,30)
fn()