您好我知道这个问题已被多次询问,但有太多的意见和论点。我没有最好的经验来验证答案,所以在这里我会解释我正在寻找的东西,也许你可以指出我正确的方向。
在我的应用程序中,我使用一些方法创建了一个对象,其中大多数都有一组预定义的默认值,如下所示:
module.exports = {
submit: function(options) {
var defaults = {
_id: 1453,
text: 'Some text',
dataObj:{
links: 3532,
arr: ['James','Paul','Lina'],
},
dims:{
width: getClientWidth(),
height: getClientHeight()
}
}
options.extend(defaults);
return sendData(defaults);
}
// other similar methods - functions
};
我感兴趣的是扩展默认局部变量的属性和属性。如您所见,默认值是一个复杂的结构化对象。请记住,期权结构可能更复杂。因此,如果我没有弄错的话,一个简单的浅合并/复制可能并不理想。
您可以想象的用法:
var app = {
// stuff
}
app.fn = require('common/lib.js');
app.initialize(function(){
var settings = {
// hell here
}
app.fn.submit(settings)
})
提前谢谢。
PS。没有使用库,我对extend()函数的纯javascript实现感兴趣。
答案 0 :(得分:0)
此处提出类似问题: deep extend (like jQuery's) for nodeJS
只需将扩展函数从接受的答案复制到项目中,以便在正确的范围内可用。然后像这样使用它:
options = extend(true, defaults, options);
您的设置对象可能类似于以下内容,并将在默认值之上合并:
var settings = {
text: "Other text",
dataObj:{
links: 3531
}
};