jQUI-widget-instance-array-prop-bug

When a widget is defined having an array as a (non-option) member, the member is shared between instances. When defined as null and then assigned to an array in _create, each instance gets its own.

HTML

<div id="bugs"></div>
<div id="ok"></div

JavaScript

$.widget( 'test.buggy', {
  _array: [],
  _create: function() {
    this._array.push(this.uuid);
    },
  dump: function() {
    this.element.val(JSON.stringify(this._array));
    }
  } );

$.widget( 'test.works', {
  _array: null,
  _create: function() {
    this._array = [];
    this._array.push(this.uuid);
    },
  dump: function() {
    this.element.val(JSON.stringify(this._array));
    }
  } );

for ( var i = 0 ; i < 3 ; i++ )
  $('<input type="text" value="'+i+'"/>').
    appendTo('#bugs').
    buggy().
    buggy('dump');

for ( var i = 0 ; i < 3 ; i++ )
  $('<input type="text" value="'+i+'"/>').
    appendTo('#ok').
    works().
    works('dump');