是否有正确的方法来$。扩展jQuery中的嵌套属性?
我拥有什么,我需要什么。 这很简单。
默认选项(有嵌套属性):
{ sDom: 'frt', bInfo: false, sPaginationType: "full_numbers", oLanguage: { sSearch: "", sLengthMenu: "Show _MENU_", oPaginate: { sFirst: "|<>|", sNext: ">>", sPrevious: "<<" } } }
实际选项:
{ oLanguage: { oPaginate: { sNext: "MODIFIED" } } }
$ .extend的结果:
{ sDom: 'frt', bInfo: false, sPaginationType: "full_numbers", oLanguage: { oPaginate: { sNext: "MODIFIED" } } }
我需要的是使用实际选项正确扩展默认选项并获得以下结果(一个属性已被修改):
{ sDom: 'frt', bInfo: false, sPaginationType: "full_numbers", oLanguage: { sSearch: "", sLengthMenu: "Show _MENU_", oPaginate: { sFirst: "|<>|", sNext: "MODIFIED" sPrevious: "<<" } } }
问题是$ .extend函数忽略嵌套属性并仅操作第一级属性。 现在我手动$ .extend每个嵌套属性,但我想这不是一个解决方案。
通过传递true
作为第一个参数,您需要一个递归副本 :
var defaults = {...} var actual = {...} //recursively merge to a blank object console.log($.extend(true,{}, defaults, actual))