javascript 之call 和 apply
经常看到网上有JS数组去重的面试题 一般的都用一个对象判断
function
unique( arr ){
其实我们可以利用 indexOf 在循环中判断当前值在新数组中是否存在 当然在IE6,7,8下数组没有 indexOf 方法 ,但字符串有indexOf
我们完全可以借用字符串的 indexOf , javascript 的 call 和 apply 就是干这个的 ,这两个函数对象的方法很强大。JS 中对象的方法,都可以使用它们来移花接木。 于是我们可以这样写
function unique2(arr){
if(!(arr instanceof Array)){
这个方法和上面的方法执行结果都一样
当然上面的数组还不能做到真正的去重 (当数组是这样的时候 [{a:1},{b:1}] 就会有问题 我们就得使用别的方法来处理了)
apply 和 call 一样 只是他们的传递的 参数不一样而已 一个是多个参数 一个是一个数组参数
比如从一个数组中找出最大值
console.log(Math.max.apply( Math.max.apply([1,2,4,5,4,2,1],[1,2,4,5,4,2,1])) )
还有 将一个DOM 集合转换成数组 然后我们就可以调用数组方法了
总之在JS 中一个对象没有某个方法 而别的对象有这个方法 都可以使用call或者apply 移花接木过来使用
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。