call apply 和 bind

三者的定义可以看MDN知乎也有相关讨论很详细,下面记录一下用三者写出的便利方法

借用String转换大写的方法来转换 数组 和 布尔值
String.prototype.toUpperCase.call(true)
// 'TRUE'
String.prototype.toUpperCase.call(['a', 'b', 'c'])
//"A,B,C"
复制代码
把类数组对象转为数组
Array.prototype.slice.call({ 0: 'a', 1: 'b', length: 2 })
// ['a', 'b']

Array.prototype.slice.call(document.querySelectorAll("div"));
Array.prototype.slice.call(arguments);
复制代码
借用数组的indexOf方法应用到类数组对象
<ul class="tab-nav">
    <li>tab1</li>
    <li class="tab-li2">tab2</li>
    <li class="tab-li3">tab3</li>
</ul>
var tabNav=document.querySelector('.tab-nav');
var tabLis=document.querySelectorAll('.tab-nav>li');
tabNav.addEventListener('click',function(e){
  var index = Array.prototype.indexOf.call(tabLis,e.target)
  console.log(index)
})
复制代码
用 apply 将数组添加到另一个数组
var array = ['a', 'b'];
var elements = [0, 1, 2];
array.push.apply(array, elements);
console.info(array); // ["a", "b", 0, 1, 2]
复制代码
用apply求取最大/最小值
/* 找出数组中最大/小的数字 */
var numbers = [5, 6, 2, 3, 7];

/* 应用(apply) Math.min/Math.max 内置函数完成 */
var max = Math.max.apply(null, numbers); /* 基本等同于 Math.max(numbers[0], ...) 或 Math.max(5, 6, ..) */
var min = Math.min.apply(null, numbers);
复制代码

转载于:https://juejin.im/post/5c2ddff0f265da611e4dc726

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值