是否有正确的方法来$。扩展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))​