Javascript / jQuery: изменение параметров в пользовательской функции - PullRequest
0 голосов
/ 27 марта 2010

Я пишу плагин, который позволит параметрам «настроить его». Но я предсказываю, что пользователь не всегда захочет настраивать каждый аспект функции.

function This_Function(a,b,c,d);

Например, может быть, они захотят настроить только a и c, но не b и d (они просто предпочтут оставить их по умолчанию). Как мне написать функцию (или параметры в этом отношении), чтобы пользователь мог настроить, какие функции он предпочел бы передать? У меня есть ощущение, что это связано с анализом ввода, но я видел много других функций с этой возможностью.

Заранее спасибо за помощь.

Ответы [ 3 ]

7 голосов
/ 27 марта 2010
function This_Function(options){
    // set up the defaults;
    var settings = {
        'opt1':2,
        'opt2': 'foobar'
    };
    $.extend(settings,options);
    if (settings.opt1 > 10) {
        //do stuff
    }
}

Позволит пользователям делать что-то вроде этого:

This_Function();
This_Function({'opt1':30});
This_Function({'opt2':'jquery'});
This_Function({'opt1':20,'opt2':'javascript'});
1 голос
/ 27 марта 2010

Более прозрачный способ ...

function This_Function(options) {
    var a = options.a;
    var b = options.b;
    var c = options.c;
    var d = options.d;
}

This_Function ({a: 12; c: 'привет'; d: 1);

0 голосов
/ 06 апреля 2013

Я думаю, что ответ, который я действительно искал для этой проблемы, был следующий:

function bacon(){
    for( var i in arguments ){
        if( arguments.hasOwnProperty(i) ){
            console.log( arguments[i] );
        }
    }
}

bacon( 'foo', 'bar', 'baz', 'boz' );

// 'foo'
// 'bar'
// 'baz'
// 'boz'

Чтобы убедиться, что используемые аргументы являются допустимыми параметрами, передаваемыми в функцию, вы должны проверить каждое свойство с помощью .hasOwnProperty().

Мне понадобилось всего 3 года, чтобы понять это:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...