1.call()方法
在使用一个指定的this
值和若干个指定的参数值的前提下调用某个函数或方法.
var name='小王',age=17;
// var _this = this;
var people = {name:'小张',Age:this.age,myFun:function(a,b){console.log(this.name+"今年"+this.age+"岁啦,来自"+a+"----"+b);}
}var demo = {name:'肖战',age:'30'
}
//call()的参数是直接放进去的,第二第三第n个参数全都用逗号分隔,直接放到后面
people.myFun.call(demo,"中国","重庆");//肖战今年30岁啦,来自中国----重庆
2.apply()方法
调用一个具有给定this值的函数,以及以一个数组(或类数组对象)的形式提供的参数。
var name='小王',age=17;
// var _this = this;
var people = {name:'小张',Age:this.age,myFun:function(a,b){console.log(this.name+"今年"+this.age+"岁啦,是"+a+b);}}var demo = {name:'肖战',age:'30'}//apply()的所有参数都必须放在一个数组里面传进去people.myFun.apply(demo,['我的',"人间理想"]);//肖战今年30岁啦,是我的人间理想
3.bind()方法
创建一个函数,使这个函数不论怎么调用都有同样的this值。
var name='小王',age=17;
// var _this = this;
var people = {name:'小张',Age:this.age,myFun:function(a,b){console.log(this.name+"今年"+this.age+"岁啦,"+a+b);}
}
var demo = {name:'肖战',age:'30'
}// bind()返回的是函数(带括号),它的参数和call()方法一样people.myFun.bind(demo,"重庆野玫瑰","永远光芒万丈!")();//肖战今年30岁啦,重庆野玫瑰永远光芒万丈!
4.call()、apply()、bind()方法的相同点
第一个参数都是 this 的指向对象,三者的参数不限定是 string 类型,允许是各种类型,包括函数 、 object 等。