call(), apply(),bind()
- 三者皆为Function的方法
- call(),apply()的作用是
调用
方法,并改变函数运行时的context(作用上下文) - bind() 的作用是
引用
方法,重新绑定函数的context(作用上下文) - 参数
- call(this,arg1,arg2);
- apply(this,[arg1,arg2]);
- bind(this,arg1,arg2);
-
Demo
var name = 'saber'; var skill = 'Excalibur'; var hero = { name:'Emiya', skill:'Unlimited Blade Works' }; function sayHello(skill){ console.log(this.name); console.log(skill); }; //调用的context为全局对象 sayHello(skill); //=>saber Excalibur //调用的context为hero对象 两个方法的参数形式不一样,作用一样 sayHello.call(hero,hero.skill); //=>Emiya Unlimited Blade Works sayHello.apply(hero,[hero.skill]); //=>Emiya Unlimited Blade Works //bind 重新绑定指定上下文对象为 'hero', 参数为 'bind指定了参数'' sayHello.bind(hero,'bind指定了参数')(hero.skill); //=>Emiya bind指定了参数 sayHello.bind(hero)(hero.skill); //=>Emiya Unlimited Blade Works