为什么跨实例共享jquery小部件选项参数?

时间:2015-06-24 07:58:30

标签: jquery arrays jquery-ui options private-members

我假设选项的所有成员只能在窗口小部件实例中访问。我给你举个例子。

(function (factory) {
  //Register as Amd module        
} (function( $ ){

  $.widget('workbench', $basic, {

  options: {
    toolname: undefined,
    tools: [],      
  },

  _create: function(){
    if(this.options.name == undefined){
       alert('Warning, parameter is missing');
       this._destroy();
    }
    this.options.tools.push(this.options.name);
    for(var i =0;  i < this.options.tools.length; i++){
       console.log(this.options.tools[i]);
    }

  },

  });

}));

如果我现在创建小部件工作台的实例

$('<div>').workbench({toolname: 'A'}); 
$('<div>').workbench({toolname: 'B'});

我得到了输出

A
A
B

但我认为它应该是

A
B

我知道克隆元素时会通过引用复制数组。但我不明白为什么这两个实例共享相同的工具数组。

感谢您的帮助。

0 个答案:

没有答案