call、apply、bind 的用法分别是什么?

2018-05-30  本文已影响3人  加油吧_

1. call()

call的第一个参数就是this所要指向的那个对象,后面的参数则是函数调用时所需的参数。

function add(a, b) {
  return a + b;
}
add.call(this, 1, 2)  // 3
var n =111;
var x = { n: 222 };
function f() {
  console.log(this.n);
}
f(x) //111
f.call(x)  //222

2. apply

var a = { n: 2 };
function f(x,y) {
  return x + y* this.n ;
}
f.call(a,1,2)  //5  
f.apply(a,[1,2])  // 5

3. bind()

var add = function (x, y) {
  return x * this.m + y * this.n;
}
var obj = {
  m: 2,
  n: 2
};
var xxx = add; 
xxx.call(obj,1,2)  //6
var yyy = add;
yyy.apply(obj,[1,2])  //6
var Add= add.bind(obj);  //此时改变 this 指向了obj对象,生成一个函数
Add(1,2)     //6
上一篇 下一篇

猜你喜欢

热点阅读