can.computeをcan.Controlインスタンス プロトタイプに追加するにはどうすればよいですか? 拡張を使用してインスタンス関数に渡そうとしていますが、クラスのすべてのインスタンスはコンピューティングの同じ単一のインスタンスを共有しています。
can.Control.extend('App.Window', {
...
},{
...
active: can.compute(true, function(newVal, oldVal) {
return !!newVal;
})
});
var a = new App.Window,
b = new App.Window;
a.active === b.active // true
a.active() // true
a.active(false)
a.active() // false
b.active() // false
明らかに、これを init 関数で行うこともできますが、そうしないほうがよいので、将来これを継承するので、親の init を呼び出すことを覚えておく必要はありません。誰かがより良い方法を持っていることを願っています。