0

can.computecan.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 を呼び出すことを覚えておく必要はありません。誰かがより良い方法を持っていることを願っています。

4

1 に答える 1