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 等。