JavaScriptプロトタイプをjQueryの.data()関数と一緒に使用しようとしています。私のコードは次のようになります。
el = this.element;
el.data("state", {
someValue: null,
anotherValue: function() {
this._val = 0;
}
});
el.data("state").anotherValue.prototype.getValue = function() {
return this._val;
}
el.data("state").anotherValue.prototype.setValue = function(val) {
if (val === Infinity || val < 1) {
this._val = 1;
} else {
this._val = val;
}
}
console.log(el.data("state").anotherValue.getValue());
これはうまくいかないようです。理由を知りたいだけです。
このコードを実行すると、次のようになります。
Uncaught TypeError: Object function () {
this._val = 0;
} has no method 'getValue'
ウィジェットファクトリに基づくjQueryプラグインに取り組んでおり、このプラグイン内に管理可能なステートマシンを構築したいと考えています。これは、プラグインの現在の状態を保存してアクセスできる中心的な場所です。これを試してみたい理由の1つは、特定の値が変化するかどうかを監視し、変化したときに他のことをトリガーできるようにしたいということです。.data()関数を使用してデータを保存する必要があります。これは、データを要素に関連付ける必要があるためです。そうしないと、同じページにプラグインの複数のインスタンスを取得したときに奇妙なことが起こります。