2009-12-23 52 views
1

我试图做一个插件,正在到一些问题:jQuery插件范围问题(关闭)

(function($){ 
    var users = {}; 

    $.fn.plugin = function(){ 
     //blah, but alters users 
    } 
    $.fn.utility_function = function(){ 
     // uses users 
    } 
}); 

发生的事情是,当我运行该插件的两个实例,“用户”结束了对于插件的每个实例具有相同的值。我如何让它们独一无二?

回答

2

这完全正常,因为您的用户对象超出了插件的范围。

我建议你保存价值为()连接到受影响的插件

看到this article您的DOM元素的jQuery方法的部分数据。

0

如果你想要独特的对象,你可以使用jQuery的extend方法构建一个对象的深层副本。

在你的情况,你会怎么做:

(function($){ 
    var users = {}; 

    $.fn.plugin = function(){ 
     var myUsers = $.extend({}, users); 
     //blah, but alters users 
     // BUT should now use myUsers instead 
    } 
    $.fn.utility_function = function(){ 
     // uses users 
    } 
}); 

但我不知道你想要的用户的唯一拷贝对象,因为他们可能是一组大概唯一的全球变化。