JQuery плагин объект по умолчанию зависит от другого ключа по умолчанию? - PullRequest
1 голос
/ 04 октября 2011

Я пытаюсь сделать один из моих вариантов зависимым от другого.

Я думаю, что проще всего объяснить, что я хотел бы сделать в коде. Итак, ниже по сути то, что я пытаюсь сделать -

settings = {
  something     : '#something',
  something_else: something + '_else' 
  // I'd like something_else to map to '#something_else' now
}

Как видите, я бы хотел использовать предыдущую пару ключ / значение для другого варианта по умолчанию. Это возможно? Если так, как я могу добиться этого?

Примечание: Я получаю 'Ошибка ссылки: что-то не определено'

1 Ответ

1 голос
/ 04 октября 2011

Нет, вы не можете сделать объект JavaScript со ссылками на себя подобным образом. Вы должны сделать это в двух частях с чем-то вроде этого:

// options is the usual plugin options objects that comes in an argument.
var defaults = {
    something: '#something'
};
var generated = {
    something_else: '_else'
};
options = $.extend({ }, defaults, options);
for(var p in generated) {
    if(!p.hasOwnProperty(p) || p in options)
        continue;
    options[p] = options.something + generated[p];
}

Вы можете попробовать это:

var defaults = {
    something:      '#something',
    something_else: '#something_else'
};

но тогда вам придется пройти и исправить something_else после объединения в options на случай, если они отправят не по умолчанию something; во время этого прохода исправления через options вы должны быть уверены, что не переписали нестандартный something_else.

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