为什么我的扩展功能不起作用?

时间:2015-12-10 18:39:59

标签: javascript callback

extend基于每个函数:

function each(collection,iterator) {
    if (Array.isArray(collection)) {
        for (var i=0; i < collection.length; i++) {
            iterator(collection[i]);
        }
    } else {
        for (var key in collection) {
            iterator(collection[key]);
        }
    }
}

在检查underscore.js之后,显然扩展函数有两个参数......但我不知道如何重写函数以便它可以工作?

function extend(newProperty) {
    each(arguments,function(source) {
        each(source,function(value,key) {
            newProperty[key]=value;
        })
    })
    return newProperty;
}

var iceCream = {flavor: "chocolate"};
extend(iceCream,{sprinkles: "lots"});
//==> { flavor: 'chocolate', undefined: 'chocolate' }

1 个答案:

答案 0 :(得分:2)

您的each函数仅提供集合的元素,它还应提供密钥。试试这个。

function each(collection,iterator) {
    if (Array.isArray(collection)) {
        for (var i=0; i < collection.length; i++) {
            iterator(collection[i], i);
        }
    } else {
        for (var key in collection) {
            iterator(collection[key], key);
        }
    }
}