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

标签 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' }

最佳答案

您的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/

相关文章:

ruby-on-rails - 如何在不调用依赖 : :destroy on associations 的情况下销毁 Rails 模型

C++ 仿函数回调设置

javascript - 几分钟后网页变得无响应并崩溃

javascript - 附加新的 html 内容时如何删除旧的 html?

javascript - nuxt 构建(SPA)生成 ./nuxt/dist/**

Qt5 中带有 pigpio 库的 C++ 回调函数

javascript - 检查 lodash 中对象数组的属性值

javascript - 自定义选项更新 Magento 产品图像

android - 有时 saveInBackground 的回调永远不会被调用

javascript - 如何使用网络库从函数外部获取更新值