如何在JavaScript函数中将参数设置为对象

时间:2015-05-08 17:04:46

标签: javascript jquery function object

[注意:以下所有代码都使用JavaScript和jQuery + jQuery-UI框架]

我的意思是,通常JS函数参数只是变量。所以我们所能做的就是这样设置:

[0-9]+[a-zA-Z_][a-zA-Z_0-9]*

但它不喜欢我可以使用我设置的所有参数。例如:

function x(parameter1, parameter2, parameter3, etc...) {/* code inside */}

你知道,function flipCard(front, back, effect, option, duration) { $(front).click(function() { $(front).hide(effect, option, duration, function(){ $(back).show(effect, option, duration) }); }); } 是一个非常罕见的参数,我可以使用。但总是使用option,我确实考虑了这些参数的变化位置。但是,似乎我可以永远这样做,所以我考虑使用参数作为对象。我尝试了许多我能想到的方式:

duration

再试一次:

function t(obj = {x,y,z}) {/* code inside */} //Absolutely fail

你有什么想法来处理这个问题吗?

2 个答案:

答案 0 :(得分:2)

我认为这就是你要问的......

在你的活动卡片中你必须检查是否传递了所需的东西,如果没有输出错误。

但是,您的代码不是处理情况的最佳方式......



function flipCard(obj) {
    $(obj.front).click(function() {
        $(obj.front).hide(obj.effect, obj.option, obj.duration, function(){
            $(obj.back).show(obj.effect, obj.option, obj.duration)
        });
    });
}

//Call flipCard with an object
//obviously set your values as needed
flipCard({
  front : undefined,
  back : undefined,
  effect : undefined,
  option : undefined
  duration: undefined
});




答案 1 :(得分:1)

您有几个选择:

  1. 使用“选项”对象:

    var xDefaults = {
        effect: "slide",
        option: "some default",
        duration: "slow"
    };
    function x(options) {
        options = $.extend({}, xDefaults, options);
        $(options.front).click(function() {
            $(options.front).hide(options.effect, /*... and so on... */);
        });
    }
    

    用法:

    x({front: "#foo", effect: "fade"});
    

    很清楚;使用起来有点笨拙。

  2. 检测函数何时调用您拥有的选项:

    function x(front, back, effect, option, duration) {
        if (/*...figure out that `option` is really `duration`...*/) {
            duration = option;
            option = null/*...or some default...*/;
        }
        $(front).click(function() {
            $(front).hide(effect, /*... and so on... */);
        });
    }
    

    弄清楚提供了哪些可选参数可能很尴尬,但这就是jQuery为其大部分功能所做的事情。您可以查看您获得的实际参数的类型,查看magic arguments伪数组以了解许多您获得的实际参数等等。