用对象覆盖jquery ui widget字符串选项

我希望jquery ui widget选项默认为字符串,但我希望它能够被一个对象覆盖。 当我这样做时,我实际上以一种奇怪的方式将字符串转换为对象,然后使用我传入的任何对象进行扩展。

$.widget("ui.test", { options: { anOption: "a,b,c" }, _create: function() { console.log(this.options); } }); $('div').test({ anOption: { a: 'A' } }); 

如果我跳过将小部件的选项传递给它,它将在_create方法中作为字符串接收。 如果我传入一个对象,就会发生奇怪的行为。 在chromes js控制台日志中我得到了这个,这不是我想要的。

 Object anOption: Object 0: "a" 1: "," 2: "b" 3: "," 4: "c" a: "A" 

我该如何解决这个问题?

jsfiddle: http : //jsfiddle.net/MatteS75/s9wK2/

如果在创建窗口小部件后更改选项,它将使用所需的对象覆盖该选项。 这可以接受吗?

 $.widget("ui.test", { options: { anOption: "a string" }, _create: function() { console.log(this.options.anOption); } }); $('div').test({}); $('div').test("option", "anOption", { a: "option1", b: "option2" }); var anOption = $('div').test("option", "anOption"); ​console.log(anOption);​