Getter 个函数

Getter functions

我浏览过许多插件的代码(出于教育目的),基本上每个插件(处理原型)都有这样的功能:

myMarker.prototype.getPosition = function() {

    return this.latlng; 
};

//OR

myMarker.prototype.getObject = function() {

    return this;
};

这背后的原因是什么?

为什么不直接使用 someObject.latlng 而不是 someObject.getPosition()

当你这样说的时候。

myMarker.prototype.getPosition = function() {

    return this.latlng; 
};

您正在定义对 class myMarker.

的所有实例可用的函数 getPosition

因此,此 class 的所有对象共享此方法而不复制。

对于someObject.latlng,没有错。 但是假设,当前 scope.So 中的所有对象都可以访问此对象,任何人都可以 modified/accessible。

当您通过原型时,您正在尝试定义一些模式,这限制了对 属性

的访问和修改

这样做的一个常见原因是避免将对象的内部数据存储耦合到 API;在此示例中,您可以更改内部存储位置的方式,然后将一些处理添加到 getPosition() 到 return 向后兼容的结果。

例如,这个库的 1.1 版本可能如下所示,调用代码不需要更改:

myMarker.prototype.getPosition = function() {
    return this.latitude + this.longitude; 
};

可以使用 ES5 get and set 的计算属性来完成此操作,但前提是代码不需要 运行 在 Internet Explorer 8 及更低版本上。