My 对象在控制台中返回已定义的值,但在直接访问时返回未定义的值



我收到这种奇怪的行为,其中对象的键值对的输出应该是未定义的,尽管它在对象中清楚地定义并且正在打印出来。

我的代码如下所示:

addLocation(loc: any) {
this.getLocationGPSFromFirebase(loc.$key).then(result => loc = Object.assign(loc, result));
console.log(loc);
this.addLocationToLocalArray(loc);
}

浏览器中console.log的输出为: 对象 {地址: "blablabla", 城市: 对象

{address: "blablabla"…}
address: "blablabla"
latitude: 37.412368
longitude: 6.0755334
$exists: function ()
$key: "uniqueKeyFromFirebase"
__proto__: Object

我用于对象创建和后续推送到数组的代码:

addLocationToLocalArray(loc: Location) {
console.log(loc.latitude, loc.longitude);
this.tourLocs.push({
address: loc.address,
latitude: loc.latitude,
longitude: loc.longitude
});
}

console.log(loc.latitude, loc.longitude);的输出为:

undefined, undefined

当我打印数组时,它看起来像这样:

[Object]
0: Object
address: "blablabla"
latitude: undefined
longitude: undefined
__proto__: Object
length: 1
__proto__: Array(0)

这绝对是奇怪的行为,我不知道是什么原因造成的。

在从 getLocation API 获得响应之前,您正在调用 add 函数。因此,您应该在 api 的回调中调用您的方法。

this.getLocationGPSFromFirebase(loc.$key)
.then(result => 
loc = Object.assign(loc, result)
console.log(loc);
this.addLocationToLocalArray(loc);
);