jQuery插件 - 这些设置如何工作?

时间:2015-08-07 07:42:26

标签: javascript jquery

我正在查看jQuery插件源以查看它是如何工作的,以及定义插件设置的方式对我来说是新的。有人可以解释它是如何工作的吗?

$.fn.thePluginFunc = function(settings) {

        settings = settings || {}; // Why is it using an OR?

        var g = settings.g || -3; // How/why are the values access this way?
        var dt = settings.dt || 20;
        var bounce = settings.bounce || 0.7;
        var endVelocity = settings.endVelocity || 20;
        var stagger = settings.stagger || 200;
        var relativeToDocument = settings.relativeToDocument || false;
        var clear = settings.clear || false;
        var fallToLeft = settings.fallToLeft || false;

3 个答案:

答案 0 :(得分:1)

这是检查对象是否存在的一种方法。如果对象不存在,则设置默认值

在上面的示例中,settingsthePluginFunc用作参数的对象,如果setting对象存在,如果它不在这种情况下它需要{}

与以下代码相同

if(settings){
   settings = settings; // if the object is there
}
else{
  settings  = {}; // set if the object is not
}

或使用

 settings = settings || {}; 

以上两个代码段相同。

答案 1 :(得分:0)

如果将设置对象传递给thePluginFunc函数,则函数内的变量将使用您的设置进行初始化,否则如果您没有将任何对象传递给函数,则变量将使用默认值初始化,如-3,20,0.7 ecc。

例如在第一个var中,如果settings.g ve将使用外部设置值初始化值g,否则使用-3。

使用此方法可以使用不完整的对象:

settings = {g: "abc", dt: "def"};

然后结果:

    var g = "abc"; 
    var dt = "def";
    var bounce = 0.7;
    var endVelocity = 20;
    var stagger = 200;
    var relativeToDocument = false;
    var clear = false;
    var fallToLeft = false;

答案 2 :(得分:0)

在JavaScript中,||运算符用于OR表达式。如果第一个操作数具有false值,则遵循此行为[即。 ''(空字符串),undefined],它将返回第二个操作数值。

settings = settings || {}; // Why is it using an OR?

如果您还没有传递任何选项,那么上面的语句将分配空对象。

与其他变量相同。

希望它会给你清晰的想法。