Javascript 使用内部变量的jQuery自定义插件之间的冲突

Javascript 使用内部变量的jQuery自定义插件之间的冲突,javascript,jquery,plugins,Javascript,Jquery,Plugins,我开始使用很多插件来快速增强站点,但我仍然习惯于jQuery。有时我会遇到冲突。最常用的词之一是设置,自我和数据,作为内部变量用于自我参考 以下面的代码为例: (function ($) { var cheese = this; var var1; var var2; $.fn.cheesetest = function (text) { cheese.var1 = text;

我开始使用很多插件来快速增强站点,但我仍然习惯于jQuery。有时我会遇到冲突。最常用的词之一是设置自我数据,作为内部变量用于自我参考

以下面的代码为例:

    (function ($)
    {
        var cheese = this;
        var var1;
        var var2;
        $.fn.cheesetest = function (text) {
            cheese.var1 = text;
            cheese.var2 = text;
            console.log(cheese.var1 + ", " + cheese.var2);
        }
    }(jQuery));

    (function ($)
    {
        var cheese = this;
        var var1;
        var var2;
        $.fn.cheese2 = function (text) {
            cheese.var1 = text;
            console.log(cheese.var1 + ", " + cheese.var2);
        }
    }(jQuery));
我使用以下命令运行代码:

$(document).ready(function () {
    $('body').cheesetest('panther');
    $('h2').cheese2('tiger');
 })
输出为:

黑豹,黑豹 老虎,黑豹

简言之,cheese(或某些插件中的self或settings)似乎指的是共享jQuery范围,而不是该插件

问题是:如何使用内部变量以便

var self

…在一个插件中与另一个插件中的self或settings变量不冲突?

这里的问题是因为您正在使用:

var cheese = this;
在这里,它将引用窗口对象,本质上,您在这里创建一个全局变量
cheese
——这就是冲突的原因

(函数($){
var={};
$.fn.cheesetest=函数(文本){
cheese.var1=文本;
cheese.var2=文本;
log(cheese.var1+“,”+cheese.var2);
}
}(jQuery));
(函数($){
var={};
$.fn.cheese2=函数(文本){
cheese.var1=文本;
log(cheese.var1+“,”+cheese.var2);
}
}(jQuery));
$(文档).ready(函数(){
$(‘body’).cheesetest(‘panther’);
$('h2')。奶酪2('tiger');
})

这里的问题是因为您正在使用:

var cheese = this;
在这里,它将引用窗口对象,本质上,您在这里创建一个全局变量
cheese
——这就是冲突的原因

(函数($){
var={};
$.fn.cheesetest=函数(文本){
cheese.var1=文本;
cheese.var2=文本;
log(cheese.var1+“,”+cheese.var2);
}
}(jQuery));
(函数($){
var={};
$.fn.cheese2=函数(文本){
cheese.var1=文本;
log(cheese.var1+“,”+cheese.var2);
}
}(jQuery));
$(文档).ready(函数(){
$(‘body’).cheesetest(‘panther’);
$('h2')。奶酪2('tiger');
})