我有一个对象,当开发者工具控制台检查时,它看起来像这样:
console.log("clicked: ", clickedMarker);
如何获取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/