理解call(),apply(),bind()

三者皆是修改this指向
call(this指向,参数,参数,参数...) ====》深研究:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Function/call

apply(this指向,[参数,参数,参数])===》深研究:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Function/apply

fun.bind(this,参数,参数,参数...) ===》深研究:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Function/bind

call的语法和作用与 apply() 方法类似,只有一个区别,就是 call() 方法接受的是一个参数列表,而 apply() 方法接受的是一个包含多个参数的数组

function info(){
  console.log(this.age)      
}
var person = {
  age:18 ,
  info   
}
var age = 28;
var info = person.info;
info.call(person)//18
info.apply(person)//18
info.bind(person)()//18
这里同样需要注意一种 特殊情况,如果 call,apply 或者 bind 传入的第一个参数值是 undefined 或者 null,严格模式下 this 的值为传入的值 null /undefined。非严格模式下,实际应用的默认绑定规则,this 指向全局对象(node环境为global,浏览器环境为window)

猜你喜欢

转载自www.cnblogs.com/zhaozhenghao/p/11096000.html