首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Getter函数

Getter函数
EN

Stack Overflow用户
提问于 2016-02-01 05:45:52
回答 2查看 61关注 0票数 0

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

代码语言:javascript
复制
myMarker.prototype.getPosition = function() {

    return this.latlng; 
};

//OR

myMarker.prototype.getObject = function() {

    return this;
};

这背后的原因是什么?

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-02-01 06:01:47

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

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

代码语言:javascript
复制
myMarker.prototype.getPosition = function() {
    return this.latitude + this.longitude; 
};

如果代码不需要在Internet 8及更低版本上运行,则可以使用ES5 到达设置的计算属性来完成这一任务。

票数 3
EN

Stack Overflow用户

发布于 2016-02-01 05:58:56

你这么说的时候。

代码语言:javascript
复制
myMarker.prototype.getPosition = function() {

    return this.latlng; 
};

您正在定义函数getPosition,该函数对类myMarker的所有实例都可用。

因此,该类的所有对象都共享此方法而不进行复制。

someObject.latlng来说,没有什么问题。但是假设当前scope.So中的所有对象都可以访问该对象,任何人都可以修改/访问它。

当您浏览prototype时,您正在尝试定义某种模式,这就限制了对属性的访问和修改。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35123707

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档