如何从这个复杂的JavaScript对象访问值?

时间:2019-03-13 19:03:53

标签: javascript

我正在与AbsoluteOrientationSensor

我有一个包含电话加速度计值的对象。

我需要的值嵌套在对象的符号内。

如何访问这些值?

对象名称是“消息”。

我已经尝试过了

console.log(message.__sensor__.quaternion);

但是我得到的结果是“未定义”。

我以前从未使用过JavaScript中的 Symbol 数据类型。

我要访问的值是四元数值

这是对象结构的屏幕截图-

The Object that I'm working with

谢谢您的帮助。

2 个答案:

答案 0 :(得分:3)

来自documentation

  

属性

     

OrientationSensor.quaternion:返回四个元素的Array,其元素包含表示设备方向的单元四元数的分量。

所以:

console.log(message.quaternion);

您还可以在屏幕快照中看到对象本身具有吸气剂quaternion


  

我以前从未在JavaScript中使用过Symbol数据类型。

出于各种原因,使用符号作为属性名称,但是如果使用它们,几乎总是意味着您作为API的使用者,不应直接访问该值。而是应使用对象提供的“公共” API来访问此数据,例如在这种情况下。

答案 1 :(得分:0)

function GetSymbol(object, name) {
  const string = `Symbol(${name})`
  return Object.getOwnPropertySymbols(object).find(symbol => symbol.toString() === string)
}

const __sensor__ = GetSymbol(message, "__sensor__")

console.log(message[__sensor__])