当前位置: 代码迷 >> 综合 >> JavaScript 中call()、apply()、bind()用法
  详细解决方案

JavaScript 中call()、apply()、bind()用法

热度:57   发布时间:2023-11-23 22:21:14.0

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

  相关解决方案