call apply bind 更改方法里面this的指向
使用call()改变方法里面,this的指向
call()方法的第一个参数必须是指定的对象,方法的原有参数,挨个放在后面
例:obj.sayHi(200,100)输出打印结果为:Hi!我叫张三,今年20岁,200--100
obj.sayHi.call(obj2,200,100)输出打印结果为:Hi!我叫李四,今年22岁,200--100
使用apply(),也可以改变方法里面this的指向,第一个参是指定的对象,方法的原有参数,统一放到第二个数组参数中。
例:obj.sayHi(200,100)输出打印结果为:Hi!我叫张三,今年20岁,200--100
obj.sayHi.apply(obj3,[200,100])输出打印结果为:Hi!我叫王五,今年24岁,200--100
使用bind(),也可以改变方法里面this的指向,用法给call()一样,方法的原有参数可以放在第一个括号,也可以放在调用的第二个括号
例:obj.sayHi(200,100)输出打印结果为:Hi!我叫张三,今年20岁,200--100
obj.sayHi.bind(obj4,200,100)()输出打印结果为:Hi!我叫丁一,今年26岁,200--100
obj.sayHi.bind(obj4)(200,100)输出打印结果为:Hi!我叫丁一,今年26岁,200--100
call()和apply()是直接运行方法,bind()是返回新的方法,需要再调用。