【学习笔记】面试中遇到的盲区(2)

一、数组中的reduce、reduceRight方法的参数以及其使用

reduce(callback(previous,current,index,arr),initial),reduce和reduceRight方法得使用一样,只是后者是逆序对数组进行遍历。方法中一共接受两个参数,一个数回调函数,一个是初始值,用于初始化回调中的第二个参数,该参数是可选的。在没有initial参数时则previous的初始值为 数组的第一个元素, current为第二个,否则previous为initial,current为数组第一个元素,同时index表示的current的索引,arr表示数组对象。
同时上面中的回调函数的返回值将作为下一次循环时的previous
利用以上两个方法可以对数组进行扁平化:

 [[1,2],[3,4],[5,6,7]].reduce(function(arr1,arr2){return arr1.concat(arr2)});

两个方法非常适合进行迭代操作的情况。

二、闭包中对象函数的引用赋值和普通对象函数的引用赋值

 var value = "window";
function say() {
     console.log(value);
     console.log(this.value);
}
var obj1 = (function(){
    var value = "1-1";
    return{
        value:"1-2",
        say:function () {
            console.log(value);
            console.log(this.value);
        }
    }
})()

var obj2 = (function () {
    var value = "2-1";
    return{
        value:"2-2",
        say:function () {
            console.log(value);
            console.log(this.value);
        }
    }
})()

say();
obj1.say();
obj2.say();
obj1.say = say;
obj1.say();
obj1.say = obj2.say;
obj1.say();

//输出结果为
window
window
1-1
1-2
2-1
2-2
window
1-2
2-1
1-2

上面注意最后一组输出结果,其中2-1的输出是因为闭包引起的,即使将obj2的say方法赋给了obj1,但是该方法对于obj2中value行程的闭包还是存在的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值