Javascript 如何通过将参数传递给func来更改默认值?

Javascript 如何通过将参数传递给func来更改默认值?,javascript,jquery,Javascript,Jquery,我为我的函数设置了默认值,但是当我想通过传递参数来更改它们时,值不会更改吗 这是一个 这是我的标记: HTML: Javascript: var InfiniteRotator = { init: function(domEle, options) { options = { itemInterval : 5000, fadeTime : 2500, currentItem : 0 }

我为我的函数设置了默认值,但是当我想通过传递参数来更改它们时,值不会更改吗

这是一个

这是我的标记:

HTML:

Javascript:

var InfiniteRotator = {
    init: function(domEle, options) {
        options = {
            itemInterval : 5000,
            fadeTime : 2500,
            currentItem : 0
        };
        //count number of items
        var numberOfItems = $('img', domEle).length;
        //show first item
        $('img', domEle).eq(options.currentItem).fadeIn();
        //loop through the items
        var infiniteLoop = setInterval(function() {
            $('img', domEle).eq(options.currentItem).fadeOut(options.fadeTime);
            if (options.currentItem == numberOfItems - 1) {
                options.currentItem = 0;
            } else {
                options.currentItem++;
            }
            $('img', domEle).eq(options.currentItem).fadeIn(options.fadeTime);
        }, options.itemInterval);
    }
};

InfiniteRotator.init($(".container"),{currentItem: 1});​

function(…, options) {
    options = {…};

function(…, options) {
    options = {…};
这样,您只需覆盖
选项
参数。您需要的是使用参数中的属性创建默认选项对象:

function(…, customOptions) {
    var defaults = {…};
    var options = $.extend(defaults, customOptions);
    ...
更短、更少的变量混淆:

function(…, options) {
    options = $.extend({…}, options);
    ...
这样,您只需覆盖
选项
参数。您需要的是使用参数中的属性创建默认选项对象:

function(…, customOptions) {
    var defaults = {…};
    var options = $.extend(defaults, customOptions);
    ...
更短、更少的变量混淆:

function(…, options) {
    options = $.extend({…}, options);
    ...
编辑:哎呀,太晚了


编辑:哎呀,太晚了。

@BaliBalo:我认为你应该换一种方式来做-你的解决方案不允许覆盖这些内容properties@BaliBalo当前位置我认为你应该反过来做-你的解决方案不允许覆盖这些内容properties@skmasq:这是单个“可选”的标准解决方案参数但是,像您在问题帖中所做的那样,只传递一个具有一个属性的对象,将不允许您访问默认属性properties@skmasq:这是单个“可选”参数的标准解决方案。但是,像您在问题帖中所做的那样,只传递一个具有一个属性的对象,将不允许您访问默认属性
function(domEle, options) {
    options = $.extend({
        itemInterval : 5000,
        fadeTime : 2500,
        currentItem : 0
    }, options);
}