dojo / store / Observable正确用法是什么?

时间:2014-04-10 15:40:43

标签: dojo observable

下面的文档显示了使用和不使用“new”关键字的Observable的用法。

HTTP // dojotoolkit.org /参考导/ 1.9 /道场/存储/ Observable.html

   // create the initial Observable store
  store = new Observable(new Memory({data: someData})); 

HTTP // dojotoolkit.org /文档/教程/ 1.6 / realtime_stores /

  Note: despite its capital "O" and dedicated module, dojo.store.
  Observable is not a    constructor; it is simply a function which 
  takes a store, wraps it with observe functionality, then returns it.
  Therefore, the new keyword should not be used with dojo.store.Observable. 

http://dojotoolkit.org/documentation/tutorials/1.7/realtime_stores/

  // wrap the store with Observable to make it possible to monitor: 
  marketStore = Observable(marketStore); 

正确用法是什么? 如果两者都正确吗?应该何时优先使用特定用途。

弗兰克。

1 个答案:

答案 0 :(得分:0)

这并不重要。屏幕背后发生的事情非常相似。当您将Observable称为以下函数时:

var store = Observable(new Memory({ data: [] }));

然后它将使用Observable()方法的返回值(这是可观察的商店)。

当您使用new关键字时,您在JavaScript中创建了Observable的新实例,这意味着Observable()函数本身将被视为构造函数新实例。

但是,当您从构造函数内部提供返回值时,该对象(作为复杂对象时)将被用作实例。因此,在这种情况下,它返回可观察的商店,因此将用作实例。如果可以找到从构造函数返回的内容,那么可以找到一篇很好的文章here

它的命名(以大写字母开头)让你认为它是Observable的一个实例,但事实并非如此。最终证明如下:

new Observable(new Memory({ data: [] })) instanceof Observable // Returns false

以下内容返回false,如果是真实实例,则会返回true


总结一下,两种方式都会返回一个可观察的商店。它没有区别,即使是性能也非常相似。

所以你使用什么并不重要,我唯一可以告诉你的是表现就像一个普通的函数而不是一个构造函数。