javascript - 从对象符号获取变量

标签 javascript typescript

我有一个对象,当开发者工具控制台检查时,它看起来像这样:

console.log("clicked: ", clickedMarker);

enter image description here

如何获取Symbol(vars)形式的address内容?

console.log("vars: ", clickedMarker["Symbol(vars)"]);
console.log("address: ", clickedMarker.address);
console.log("address2: ", clickedMarker["address"]);
console.log("vars2: ", clickedMarker["vars"]);
console.log("vars3: ", clickedMarker.vars);
console.log("Symbol(vars): ", clickedMarker._objectInstance["Symbol(vars)"]);

但结果都是未定义

编辑:这是一个 Typescript 应用程序,但 Javascript 解决方案运行良好。

最佳答案

问题可能是您正在寻找字符串键而不是符号键。

要了解有关符号是什么的更多信息(无论如何,它是 javascript 中的原语),请检查此:https://developer.mozilla.org/it/docs/Web/JavaScript/Reference/Global_Objects/Symbol

要解决此问题,请使用舒适的 toString 原型(prototype)找到正确的符号,并使用通用对象的 getOwnPropertySymbols 方法:

// look for the symbol having key "vars" in the object's symbols list.
var mFound = Object.getOwnPropertySymbols(clickedMarker._objectInstance)
                   .find(e => e.toString() === "Symbol(vars)");
// Use the above symbol as the object's key.
var address = clickedMarker._objectInstance[mFound].address;

请记住,为了进一步安全,您应该检查 mFound 是否已有效找到(因此不是未定义的,或者一般不是错误的)。

关于javascript - 从对象符号获取变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47285445/

相关文章:

javascript - 在 Javascript 中创建大量工厂对象的有效方法

javascript - 如何镜像文本选择?

javascript - Google Firebase 函数 : webdriver. io 获取 html 网站的源代码

javascript - 使用 Javascript 从 HTML 页面获取文本区域值到 Python Flask

angular - 使用从其自己的组件上的可观察对象检索的数据的方法在用作 Input() 时返回未定义

angular - 错误 : (SystemJS) XHR error (404 Not Found) loading ng2-appinsights

typescript - TypeScript Compiler API 可以解析表达式的值吗?

javascript - 双击更改ul的颜色

javascript - 按数组分组

typescript 输出文件名更改