MVCarray 和数组的区别

laz*_*bum 5 javascript arrays google-maps-api-3

我一直在寻找谷歌地图 APIMVCArrayArray谷歌地图 API之间的差异,但我还没有找到任何具体的东西。

我有点明白这MVCArray是一个更好的选择,因为它会跟踪变化(以某种方式)并有某种特殊事件。并且一些相同的方法名称略有不同,例如array.lengthMVCarray.getLength()

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

谢谢!

ame*_*iel 6

要解释 MVCArrays,理解 MVCObjects 很重要。

MVCObject是构建谷歌地图的“基石”类之一。它就像一个带有 setter 和 getter 属性的普通对象(目前没有什么特别之处),但它的特别之处在于:

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

所以,基本上,MVCObjects 是 observable-bindable objetcs。

一个MVCArray,因此从MVCObject继承,所以你可以设置或获取其属性,绑定他们中的一些,被其他对象绑定等,但也,它实现了一些额外的

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

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