从另一个脚本访问javascript变量

时间:2011-12-08 10:07:31

标签: javascript jquery jquery-plugins global-variables

我有以下结构

// script1.js

jQuery(document).ready(function($) {
    var somevar;
    $('somelem').myPlugin();
});


// script2.js

(function($) {
    $.fn.myPlugin = function(options) {

        // access and modify 'somevar' here so that it gets modified
        // in the function which called a plugin

    };
});
  • 我希望'somevar'变量能够被插件修改,我会的 能够在插件中进一步使用已修改的变量 来电功能的范围。
  • 我不想使用全局变量。
  • 我认为没有使用将变量作为选项传递给插件 将成为插件功能的本地,修改不会 据我所知修改原始变量。
  • 我可能误解了javascript如何工作的概念,所以任何 回答赞赏。

4 个答案:

答案 0 :(得分:2)

传递基本类型时,它会按值传递。但是,如果你传递一个对象,那么它将通过引用传递。所以,你可以这样做 -

jQuery(document).ready(function($) {
    var somevar = {val: 5};
    $(document).myPlugin(somevar);
    alert(somevar.val);
});


// script2.js

(function($) {
    $.fn.myPlugin = function(options) {
        options.val ++;
        // access and modify 'somevar' here so that it gets modified
        // in the function which called a plugin

    };
})(jQuery);

查看现场演示:: http://jsfiddle.net/rifat/EdRFm/

答案 1 :(得分:0)

您可以为全局变量创建一个单例类。

答案 2 :(得分:0)

您可以让插件函数返回一个值并将其分配给somevar

somevar = $('someelem').myPlugin();

或者您可以将回调作为参数传递给插件方法

// Script 1
var somevar;
$('someelem').myPlugin(function(newValue) {
    somevar = newValue;
});

// Script 2
$.fn.myPlugin = function(callback) {
    ...
    callback(newValueForSomeVar);
}

答案 3 :(得分:-1)

您可以编写将从变量设置值的函数,然后在另一个脚本中调用它。

//script1.js

var somevar;

function setSomevar(value){
somevar = value;
}

function getSomevar(){
return somevar;
}

jQuery(document).ready(function($) {
$('somelem').myPlugin();
});

现在您可以调用函数setSomevar并将值传递给变量。 我希望有所帮助。最好的祝福。