理解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)