gpt4 book ai didi

javascript - 类似于 jQuery.extend() 但独立的?

转载 作者:行者123 更新时间:2023-11-28 08:36:19 24 4
gpt4 key购买 nike

我正在寻找一种将两个配置对象合并在一起的方法,例如:

var developmentConfig = {
url: "localhost",
port: 80
};

var productionConfig = {
url: "example.com"
};

var config = isDevelopment ? developmentConfig : jQuery.extend(developmentConfig, productionConfig);

但是,这是一个 Node.js 应用程序,我不想包含 jQuery,并且正在寻找类似但独立的东西。我知道我可以自己写一些类似的东西,但我宁愿使用经过测试和证明的东西(当配置对象使用更丰富的层次结构时会出现边缘情况、复杂性等)

编辑:简单的迭代是不够的,因为它不能处理层次结构。 Underscore 的扩展也不会。

最佳答案

如果您需要的只是扩展,那么只需几行即可轻松编写。如果你想要递归扩展,如果你想要循环结构、具有复杂原型(prototype)链的对象等,那么完全通用地做到这一点是很棘手的。如果它只是一些嵌套的普通对象,那么这应该可以工作:

function extend (target, source) {
target = target || {};
for (var prop in source) {
if (typeof source[prop] === 'object') {
target[prop] = extend(target[prop], source[prop]);
} else {
target[prop] = source[prop];
}
}
return target;
}

如果您正在寻找一个轻量级库来执行此操作(由于上面列出的原因,减去递归)以及 javascript 未提供的其他类似功能,请查看 Underscore这也可以通过 Node 的 NPM 获得。

关于javascript - 类似于 jQuery.extend() 但独立的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21123172/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com