MVCarray和数组之间的差异

时间:2017-03-28 08:20:22

标签: javascript arrays google-maps-api-3

我一直在查找Google地图API的MVCArrayArray之间的差异,但我没有找到任何具体内容。

我有点认为MVCArray是一个更好的选择,因为它跟踪变化(不知何故)并且有某种特殊事件。并且一些相同的方法具有略微不同的名称,例如, array.lengthMVCarray.getLength()

但有人可以在外行人的术语中解释两者之间的明显差异吗?如果你能举出一些简单的例子来让它更容易理解,那就太好了。

谢谢!

2 个答案:

答案 0 :(得分:3)

要解释MVCArrays,了解MVCObjects非常重要。

MVCObject是" keystone"之一类谷歌地图是建立在。它就像一个普通的对象,它的属性带有setter和getter(到目前为止没什么特别的),但它的特殊之处在于:

  1. 您可以添加侦听器以检测何时更改任何属性(使用set方法)并执行回调函数
  2. 您可以将其任何属性绑定到其他MVCObject的另一个属性(或从此继承的任何类)
  3. 其他MVCObjects(或从此继承的任何类)可以将其属性绑定到当前的属性。
  4. 因此,基本上,MVCObjects是可观察的可绑定对象。

    MVCArray继承自MVCObject,因此您可以设置或获取其属性,绑定其中一些属性,被其他对象绑定等等。但是,它还实现了一些附加功能

    • 它实现了一些可以在本机javascript数组中使用的方法,例如pushpopforEach等,所以有几个google.maps方法可以接受MVCArray或者是本机数组,因为它将使用相同的方法来遍历它们。
    • 它有一个数组属性(您可以使用getArray方法访问),这是一个本机js数组。如上所述的类似数组的方法将被转发到此数组。
    • 它实现了一组事件,因此您可以检测基础数组中的元素何时被设置,删除或更改。

    因此,基本上,MVCArrays是可观察的数组。由于它继承自MVCObject,因此它们的属性也是可绑定的

答案 1 :(得分:0)

感谢您的投入。根据我的阅读并尝试使用arrayMVCarray更改折线来存储不同的坐标,我发现:

  • 由于MVCarray附加了相关事件(insertremoveset)所以当我更改任何值时,该行会立即更新 旧的线路消失了。

  • array中的值更改时,新行也会出现,但是 保留旧行。

因此,使用MVCarray

会更好
相关问题