繁体   English   中英

通过Javascript alert()和console.log()显示对象时显示的不同输出

[英]Different output displayed when displaying objects through Javascript alert() and console.log()

这可能是非常基本的,但我缺少解释。 如果我警告了getBounds()方法返回的LatLngBounds,我会看到两个经纬度值,如预期的那样:((num1,num2),(num3,num4))。 显然,getBounds()方法返回一个对象。 如果我对相同的返回对象进行console.log记录,则会显示具有以下属性的对象:

 ga: Dg
    b: -87.73588298847653
    d: -87.56422161152341
 ...
 ta: Ig
    b: 41.8883823394486
    d: 41.811660656497494
 ...

问题: alert()是否将对象转换为字符串? 我以为不是。 这些ga,ta是什么? 我本来希望有一些名称,例如sw,ne(西南和东北),然后是lat和long。 这些ga,ta,b,d名称有什么含义?

更新:我更新了标题,以删除对Google Maps API的引用,因为问题和答案对任何Javascript对象都是通用的。 碰巧我在执行Map API编码时遇到了它。 如果您想知道为什么警报输出与某些对象的console.log输出不同,那么值得尝试一下。 也看了

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/toString

alert()需要一个字符串。 如果您在console.log中检查bounds对象(扩展__proto__属性),您会看到还有一个toString()函数,该函数在alert(bounds)上被调用。

属性gata是边界数据的内部表示形式,边界数据已转换为sw和ne值。 直接使用/操作它们是不明智的,因为更改此内部结构时,代码可能会崩溃。

此外,如果您致电

console.log('bounds: ' + bounds);

结果将是,例如

bounds: ((-34.028249, 151.157507), (-33.80010128657071, 151.28747820854187)) 

因为由于字符串连接而调用bounds.toString()方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM