jquery插件默认对象依赖于其他默认密钥?

时间:2011-10-04 02:18:41

标签: jquery jquery-plugins

我试图让我的一个选项依赖于另一个选项。

我认为最简单的解释一下我想在代码中做些什么。所以,下面基本上就是我要做的 -

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

如您所见,我希望能够依赖以前的键/值对作为另一个默认选项。那可能吗?如果是这样,我该如何实现呢?

注意:我收到了'参考错误:某些内容未定义'

1 个答案:

答案 0 :(得分:1)

不,你不能像这样制作一个自我引用的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