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' }
最佳答案
您的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);
}
}
}
关于javascript - 为什么我的扩展功能不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34209325/