Javascript 序列化坐标:Object.keys()在本机接口的实例上失败?

Javascript 序列化坐标:Object.keys()在本机接口的实例上失败?,javascript,google-chrome,Javascript,Google Chrome,我有一些JavaScript在Chrome中运行,使用: 当Chrome检测到位置变化时,它会触发第一次回调。这很有效 当我试图用这些数据做一些事情时,问题就来了。当启动回调时,在我的控制台上,我将首先能够看到我调用console.logpos.coords的坐标对象: 坐标{纬度:5.520007,经度:13.404954,高度:零,精度:150,高度精度:零,…} 但是,在调用console.logObject.keyspos.coords的下一行中,我得到一个空数组: [] 同样,如果我尝

我有一些JavaScript在Chrome中运行,使用:

当Chrome检测到位置变化时,它会触发第一次回调。这很有效

当我试图用这些数据做一些事情时,问题就来了。当启动回调时,在我的控制台上,我将首先能够看到我调用console.logpos.coords的坐标对象:

坐标{纬度:5.520007,经度:13.404954,高度:零,精度:150,高度精度:零,…}

但是,在调用console.logObject.keyspos.coords的下一行中,我得到一个空数组:

[]

同样,如果我尝试使用JSON.stringifypos.coords,我只会得到一个空对象{}

是否有任何合理的方法循环使用pos.coords的键?我必须自己列出要循环使用的键吗

Object.keyspos.coords获取一个空数组

是的,接口的属性在原型对象上实现为getter,而不是自己的属性,因此object.keys找不到它们

是否有任何合理的方法循环使用pos.coords的键

事实上,您可以在它们之间循环:

for (const p in pos.coords)
    console.log(p);
另一种选择是使用

Object.getOwnPropertyNames(Object.getPrototypeOf(pos.coords));
你猜他们为什么这样做吗


我怀疑它们是访问从主机对象链接的内部本机数据表示的getter。这样,它们就可以根据需要隐式地只读。不过,他们也应该能够通过简单地让自己拥有不可写的数据属性来实现这一点。

如果由于某种原因无法枚举,请尝试Object.getOwnPropertyNames?或者遍历原型链以查找getter。@Bergi Object.getOwnPropertyNamespos.coords也显示为空数组。似乎有一个NPM包用于此!属性的硬编码列表:奇怪。可能是原型上定义的getter函数。Object.getOwnPropertyNamespos.coords.\uuuu proto\uuuuu;如果是这样的话,您可以像这样遍历它们:Object.getOwnPropertyNamespos.coords.\uuu proto\uuuu.forEachp=>console.logpos.coords[p]@Brad,请再试一次。它们一定在某个地方……好吧,这是一个可以像代理一样工作的宿主对象,但我看不出有什么原因
Object.getOwnPropertyNames(Object.getPrototypeOf(pos.coords));