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' }
答案 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);
}
}
}