javascript – jQuery扩展覆盖错误的值

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

这是我的默认设置数组:

slider.settings = {
            background: {
                animation : {
                    direction : 'horizontal',increment : 15 //can be any number
                }
            }
        }

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

settingsToOverwrite = {
        background:{
            animation:{
                direction:'vertical'
            }
        }
    }

现在,我合并了两个:

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

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

解决方法

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

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

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

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

$.extend(true,options);

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

slider.settings = $.extend(true,{},options);
原文链接:https://www.f2er.com/jquery/156392.html

猜你在找的jQuery相关文章