huangzhaoxiao

博客园 首页 新随笔 联系 订阅 管理

apply、call、bind都是改变要执行函数的this作用域

 

1、 apply、call类似都是调用直接执行函数主要区别在于传递参数的形式不同。

1.1、call可以多参数传入

var obj = { test: '123' }
function fn() {
  console.log(this, arguments);
}
fn.call(obj, ['admin'], 123, 245)
 
1.2、apply只能通过数组的形式传递参数
var obj = { test: '123' }
function fn() {
  console.log(this, arguments);
}
fn.apply(obj, [123])
 2、bind 是返回一个新的函数缓存着但不执行而是等到需要的时候才执行
var obj = { test: '123' }
function fn() {
console.log(this, arguments);
}
var b = fn.bind(obj, ['admin'], 123, 456);
console.log(b())
 
小结:bind、apply、call还可以实现函数的继承等等诸多功能、本文只是做一个简单的入门demo方便理解
posted on 2019-07-30 17:23  servant-catholic  阅读(94)  评论(0编辑  收藏  举报