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 及更低版本上。
我浏览过许多插件的代码(出于教育目的),基本上每个插件(处理原型)都有这样的功能:
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 及更低版本上。