由于 ES5 中的原生数组的局限性,observable.array 会创建一个人造数组(类数组对象)来代替真正的数组。实际上,这些数组能像原生数组一样很好的工作,并且支持所有的原生方法,包括从索引的分配到包含数组长度。

不同于 和 reverse 函数的内置实现,observableArray.sort 和 observableArray.reverse 不会改变数组本身,而只是返回一个排序过/反转过的拷贝。

  • observe(listener, fireImmediately? = false) - 监听数组的变化。回调函数将接收表示数组拼接或数组更改的参数,它符合 。它返回一个清理函数以用来停止监听器。
  • clear() - 从数组中删除所有项。
  • find(predicate: (item, index, array) => boolean, thisArg?) - 基本上等同于 ES7 的 Array.find 提议。
  • findIndex(predicate: (item, index, array) => boolean, thisArg?) - 基本上等同于 ES7 的 Array.findIndex 提议。
  • peek() - 和 slice() 类似, 返回一个有所有值的数组并且数组可以放心的传递给其它库。

slice 相反,peek 不创建保护性拷贝。如果你确定是以只读方式使用数组,请在性能关键的应用中使用此方法。在性能关键的部分,还建议使用一个扁平的 observable 数组。

选项用来给数组一个友好的调试名称,用于 spy 或者 MobX 开发者工具。