javascript – 是否有正确的方法$.extend jQuery中的嵌套属性?

我有什么和我需要什么这很容易.

默认选项(有嵌套属性):

{
  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))​

相关文章

jQuery插件的种类 1、封装对象方法 这种插件是将对象方法封装起来,用于对通过选择器获取的jQuery对象进...
扩展jQuery插件和方法的作用是非常强大的,它可以节省大量开发时间。 入门 编写一个jQuery插件开始于给...
最近项目中需要实现3D图片层叠旋转木马切换的效果,于是用到了jquery.roundabout.js。 兼容性如图: ht...
一、什么是deferred对象? 开发网站的过程中,我们经常遇到某些耗时很长的javascript操作。其中,既有异...
AMD 模块 AMD(异步模块定义,Asynchronous Module Definition)格式总体的目标是为现在的开发者提供一...