在jquery函数中设置变量

在jquery函数中设置变量,jquery,Jquery,好吧,我知道,标题听起来可能有点奇怪 以下问题: 我有一个jquery函数,如下所示: (function($){ $.fn.myFunction = function(opts){ var settings = { params: {} }; } if ( options ) { $.extend( settings, options ); } } $('#elem').myFunctio

好吧,我知道,标题听起来可能有点奇怪

以下问题:

我有一个jquery函数,如下所示:

(function($){
    $.fn.myFunction = function(opts){
        var settings = {
           params: {}
        };
    }

    if ( options ) { 
      $.extend( settings, options );
    }

}
$('#elem').myFunction({'data':'test','data2': 'test2'});
现在,该函数应用于如下元素:

(function($){
    $.fn.myFunction = function(opts){
        var settings = {
           params: {}
        };
    }

    if ( options ) { 
      $.extend( settings, options );
    }

}
$('#elem').myFunction({'data':'test','data2': 'test2'});
如何从函数外部访问settings属性

也就是说,在函数初始化之后,我想更改一些设置-但我不知道如何更改

有什么想法吗


(希望不要太混淆我写的内容:)

您必须将变量提升到更高级别的范围

(function ($) {

    // we expose your variable up here
    var settings = {
    };

    $.fn.myFunction = function (opts) {
        // ...instead of down here
        // do something with settings, like:
        opts = $.extend({}, settings, opts);
    }

    // you can then access a "shared" copy of your variable even here
    if (options) {
        $.extend(settings, options);
    }

})(jQuery);
如果你必须进一步暴露它,你只需要按照同样的要点来工作

但是,作为旁注,请注意调用
$.extend(设置,选项)
将修改
设置
变量。在不修改原始
设置的情况下执行相同操作的一个好方法是对空对象调用
$.extend()
,然后像我在示例中的第一个
$.extend()
调用一样缓存返回

var modified_options = $.extend({}, settings, options);

谢谢你。。。但是我需要在初始化对象时更改设置,而不调用对象的函数。当我试图从对象外部访问«设置»时,我得到一个错误,表示未定义«设置»。