谷歌地图javascript问题

谷歌地图javascript问题,javascript,google-maps,Javascript,Google Maps,在使用GoogleMapAPI时,我看到了一些我不理解的东西。我有以下代码来拉视口 var bounds = map.getBounds(); var viewport = { top: bounds.getNorthEast().lat(), right: bounds.getNorthEast().lng(), bottom: bounds.getSouthWest().lat(), left: bounds.getSouthWest().lng() };

在使用GoogleMapAPI时,我看到了一些我不理解的东西。我有以下代码来拉视口

var bounds = map.getBounds();
var viewport = {
    top: bounds.getNorthEast().lat(),
    right: bounds.getNorthEast().lng(),
    bottom: bounds.getSouthWest().lat(),
    left: bounds.getSouthWest().lng()
};
结果是viewport.top返回

57.220445088498764 {
    toJSON : function(key) { return this.valueOf(); } } 
有人能给我解释一下这是什么吗?我不完全理解js原型,但基于我有限的理解,js原型是附加到对象实例的函数。既然数字是一个对象,谷歌有没有在它返回的所有对象上放置一个名为“toJSON”的原型函数

我怎样才能摆脱这个问题,最终只得到57.220445088498764这个数字


我试图使用json2.js JSON.stringify,但由于这个奇怪的函数,它没有返回正确的JSON。

在Javascript中,所有东西都是一个对象**-偶数。这意味着我们可以向任何东西添加方法-偶数。在Firebug或Chrome inspector中尝试以下操作:

Number.prototype.hello=function(){alert(“hello,world!”);}

即使x是一个数字,它仍然可以有方法。通过在原型中添加一个Number方法,我们确保所有的Number都有该方法。当然,正常数量的东西也会起作用:

var y = x + 2;
window.console.log(y); // Will output 4.
为了方便起见,mapsapi似乎使用它向数字添加toJSON方法。在我看来,这不是一个伟大的设计策略,但它也是无害的。您的数字将继续像数字一样工作,因此您可以安全地忽略toJSON方法


**除了数字或字符串文字等不存在的内容。

删除number.prototype.toJSON
现在的工作方式有什么问题?在数字原型上有一个额外的函数应该不会伤害任何东西(或者至少不会伤害你平时遇到的任何东西)。去掉这个函数可能是一个非常糟糕的主意,因为GoogleAPI的其他部分可能依赖它。
var y = x + 2;
window.console.log(y); // Will output 4.