我们想要声明要在插件中使用的设置集合:
var settings = { x: 0, y: 1 };
然后在通话时使用用户选项扩展/覆盖它们:
function x(opts) {
opts = $.extend(settings, opts);
...
x({ y: 2 });
...除了嵌套选项外,一切都很好:
var settings = { x: 0, y: 1, files: { path: '/', names: { xml: 'x', kml: 'k' } } }
x({ files: { path: '/tmp' } });
会清除files
的内容,使名称消失。
我的兴趣是只指定文件路径,但$.extend
并不足以实现这一目标。或者是吗?这通常是如何处理的?
答案 0 :(得分:2)
它已经使用$.extend
的深度参数实现:
jQuery.extend( [deep ], target, object1 [, objectN ] )
例如:
var settings = {
x: 0,
y: 1,
files: {
path: '/',
names: {
xml: 'x',
kml: 'k'
}
}
};
function x(opts) {
opts = $.extend(true, settings, opts);
console.dir(opts);
}
x({
files: {
path: '/tmp'
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<!-- open your browser's console to see the output -->