apply call bind中的null

如果把null作为this的绑定对象传入到call、apply或者bind,这些值在调用时会被忽略,实际应用的是默认绑定规则:

function foo(){
  console.log(this.a)  
}

var a = 2;

foo.call(null); // 2

那么什么情况下会传入null呢?

一种非常常见的做法是使用apply(..)来‘展开’一个数组,并当作一个参数传入一个函数。

类似的,bind(..)可以对参数进行柯力化(预先设置一些参数)(es6中可以用...操作符),这种方法非常有用

function foo(a, b) {
  console.log("a: "+ a +",b: " + b)  
}

// 把数组‘展开’成参数
foo.apply(null, [2, 3]) // a: 2,b: 3

// 使用bind(..)进行柯里化
var bar = foo.bind(null, 2);
bar(3); // a: 2, b: 3

这两种方法都需要传入一个参数当作this的绑定对象。如果函数并不关心this的话,你仍然需要传入一个占位置,这时null是一个不错的选择。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值