使用jQuery UI Widget Factory创建实例变量的正确方法

我正在使用jQuery UI小部件工厂。

$.widget("myPlugin" , { options: { }, _create: function() { }, instanceVar: "huzzah!" }); 

在测试时,看起来instanceVar实际上是原型的一部分。 所以插件的所有实例都是一样的。

我可以通过将instanceVar放入选项来解决这个问题,如下所示:

 $.widget("myPlugin" , { options: { instanceVar: "huzzah!" }, _create: function() { }, }); 

然而,这看起来很奇怪,因为instanceVar只是插件使用的内部变量 – 而不是插件的用户应该能够改变的东西。

有另一种(更好的)方法来实现这一目标吗?

谢谢你的帮助!

您可以在实例本身上存储私有数据,例如,在_create内部,您应该可以执行此操作。 this.instanceVar = "huzzah!"

 $.widget("ui.myPlugin", { options: { foo: "foo" }, _create: function() { this.instanceVar = "huzzah!" }, _setOption: function() { this.instanceVar = "worky!"; }, destroy: function() { console.log(this.instanceVar); } }); $(document).myPlugin().myPlugin("option","foo","bar").myPlugin("destroy"); // "worky" $("body").myPlugin().myPlugin("destroy"); // "huzzah! 

演示: http : //jsfiddle.net/PGUqr/