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

通过Javascript alert()和console.log()显示对象时显示的不同输出,javascript,google-maps-api-3,Javascript,Google Maps Api 3,这可能是非常基本的,但我缺少一个解释。如果我提醒getBounds()方法返回的LatLngBounds,我会看到两个lat/long值,正如预期的那样:((num1,num2),(num3,num4))。显然,getBounds()方法返回一个对象。如果我对同一个返回的对象执行console.log,则会显示具有以下属性的对象: ga: Dg b: -87.73588298847653 d: -87.56422161152341 ... ta: Ig b: 41.

这可能是非常基本的,但我缺少一个解释。如果我提醒getBounds()方法返回的LatLngBounds,我会看到两个lat/long值,正如预期的那样:((num1,num2),(num3,num4))。显然,getBounds()方法返回一个对象。如果我对同一个返回的对象执行console.log,则会显示具有以下属性的对象:

 ga: Dg
    b: -87.73588298847653
    d: -87.56422161152341
 ...
 ta: Ig
    b: 41.8883823394486
    d: 41.811660656497494
 ...
问题: A.alert()是否将对象转换为字符串?我不这么认为。 B这些是什么?我本以为会有一些名字,比如西南部、东北部(代表西南部和东北部),后面跟着拉特(lat)和朗(long)。这些ga、ta、b、d的名字有什么意义吗

更新: 我更新了标题以删除对GoogleMapsAPI的引用,因为问题和答案对于任何Javascript对象都是通用的。我在进行Map-API编码时恰好遇到了这个问题。如果您曾经想知道为什么您的警报输出与某些对象的console.log输出不同,那么这个答案值得一读。也读

警报()
需要一个字符串。如果您检查console.log中的bounds对象(展开
\uuu proto\uuu
属性),您将看到还有一个函数
toString()
,它在
警报(边界)
上调用

属性
ga
ta
是边界数据的内部表示,这些边界数据转换为sw和ne值。直接使用/操作它们是不明智的,因为当这个内部结构发生变化时,代码可能会崩溃

另外,如果你打电话

console.log('bounds: ' + bounds);
例如,结果将是

bounds: ((-34.028249, 151.157507), (-33.80010128657071, 151.28747820854187)) 
因为由于字符串连接而调用了
bounds.toString()
方法