Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从对象符号获取变量_Javascript_Typescript - Fatal编程技术网

Javascript 从对象符号获取变量

Javascript 从对象符号获取变量,javascript,typescript,Javascript,Typescript,我有一个对象,当由开发人员工具控制台检查时,它如下所示: console.log("clicked: ", clickedMarker); 如何获取地址内容表单符号(VAR) 但这一切都是未定义的 编辑:这是一个Typescript应用程序,但Javascript解决方案运行良好。问题可能是您正在寻找一个字符串键而不是符号 要了解符号是什么(无论如何,它是javascript中的原语),请检查以下内容: 要解决此问题,请使用舒适的toString原型找到正确的符号,并使用泛型对象的getOw

我有一个对象,当由开发人员工具控制台检查时,它如下所示:

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

如何获取
地址
内容表单
符号(VAR)

但这一切都是未定义的


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

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

要了解符号是什么(无论如何,它是javascript中的原语),请检查以下内容:

要解决此问题,请使用舒适的toString原型找到正确的符号,并使用泛型对象的
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
(因此不是未定义的,或者通常不是错误的)。

这些是符号,因此您需要正确地查找它们。如果您不知道符号是什么,请查看官方MDN:。也就是说,这里有一个针对您的案例的解决方案,您可以随意回顾或以您喜欢的方式实施它。简而言之,您不能按字符串搜索,您需要(最终)通过toString转换找到正确的符号;请把输出结果出来。@briosheje Yep,就是这样-它成功了!谢谢大家!@TadijaBagarić:为了清楚起见,我在下面添加了一个答案,请随意查看,不要记得安全地检查您的“Live”中是否未定义mFound防止意外异常的代码:)。关于未定义的警告-如果我显式设置该符号是否可能为假?@TadijaBagarić:如果不存在该符号的键,它将返回未定义。因此,您应该(始终)处理未定义的情况,不管它是否会发生。我个人不会特别在那个对象上强制使用符号,我只会处理找不到“vars”符号的情况。简而言之,我只需添加:
if(mFound){//address stuff}
// 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;