javascript – jQuery扩展覆盖错误的值

前端之家收集整理的这篇文章主要介绍了javascript – jQuery扩展覆盖错误的值前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在插件中使用jQuery扩展来覆盖默认参数.但是,我有一个问题.

这是我的默认设置数组:

  1. slider.settings = {
  2. background: {
  3. animation : {
  4. direction : 'horizontal',increment : 15 //can be any number
  5. }
  6. }
  7. }

现在,我想覆盖direction参数.这是我将使用extend合并的数组:

  1. settingsToOverwrite = {
  2. background:{
  3. animation:{
  4. direction:'vertical'
  5. }
  6. }
  7. }

现在,我合并了两个:

  1. slider.settings = $.extend(slider.settings,options)

我可以看到方向值已更新.但是,增量不再存在.我知道为了避免这个问题,我只能在第一级设置参数,但我看到了更多的代码清晰度.有办法吗?如果没有,我会将所有内容改为只有一层深.

解决方法

默认情况下,jQuery.extend()仅比较直接属性,执行“浅合并”.由于两个对象都具有背景,因此它只需要从第二个对象获取整个背景.

但是,pass a true作为第一个参数,jQuery.extend()将执行“深度合并”.

  1. slider.settings = $.extend(true,slider.settings,options);

此外,由于第一个对象是目标并且将被修改并返回,因此您可以使用以下命令更新slider.settings:

  1. $.extend(true,options);

而且,如果你想从合并中获得一个新的对象,你必须自己创建它:

  1. slider.settings = $.extend(true,{},options);

猜你在找的jQuery相关文章