函数的call、apply和bind方法

2019-11-07  本文已影响0人  小蜗牛的碎碎步
call、apply作用相同只是传递参数的方式不同。
  1. 更改this指向,从而扩充了函数作用域
  2. 调用函数
  3. 传递参数
function sayName(age,sex){
  console.log(this.name+"-"+sex+"-"+age);
}
let p1 = {name:"zhangsan"};
let p2 = {name:"lisi"};
//单个变量传递参数
sayName.call(p1,18,"女"); //zhangsan-女-18
//以数组或者arguments对象传递参数
sayName.apply(p2,[19,"男"]);//lis-男-19
bind

创建函数的实例,其this值会被绑定到传给bind函数的值,其返回值仍然是函数,需要手动执行。

let p3 = {name:"你是谁?"};
//参数只能单个传递,不能以数组或者arguments形式
let f = sayName.bind(p3,30,"男"); // 返回sayName的实例,未执行
f();//你是谁?- 男 - 30
上一篇 下一篇

猜你喜欢

热点阅读