我有什么和我需要什么这很容易.
默认选项(有嵌套属性):
{ sDom: 'frt<"tfoot"lp>',bInfo: false,sPaginationType: "full_numbers",oLanguage: { sSearch: "",sLengthMenu: "Show _MENU_",oPaginate: { sFirst: "|<<",sLast: ">>|",sNext: ">>",sPrevIoUs: "<<" } } }
实际选项:
{ oLanguage: { oPaginate: { sNext: "MODIFIED" } } }
$.extend的结果:
{ sDom: 'frt<"tfoot"lp>',oLanguage: { oPaginate: { sNext: "MODIFIED" } } }
我需要的是使用实际选项适当地扩展默认选项,并获得以下结果(一个属性已被修改):
{ sDom: 'frt<"tfoot"lp>',sNext: "MODIFIED" sPrevIoUs: "<<" } } }
问题是$.extend函数忽略嵌套属性,只能操作一级属性.现在我手动$.extend每个嵌套的属性,但我想这不是一个解决方案.
解决方法
通过传递true作为第一个参数需要
a recursive copy:
var defaults = {...} var actual = {...} //recursively merge to a blank object console.log($.extend(true,{},defaults,actual))