0

如果我有一个返回标记模板文字的函数,我可以控制台记录函数 toString(),它会显示我的变量的对象和属性名称。

function myfN() {
 return tag`Test ${data.name}`
}
    
// this console logs the information I would need inside my tag, see below.
console.log(myfN.toString())
console output >>>>
function myfN() {
 return tag(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["Test ", ""])), data.name);
}

如您所见data.name,在日志结果中,现在当我们查看我的标记函数时,我有我的字符串和值

function tag(literals, ...vars) {
  console.log(literals.raw);
  console.log(vars);

  // get here that the literals are using `data.name`
}

有没有办法在我的标签中获取变量名而不将整个对象作为值传递到字符串中?一切

4

1 回答 1

0

与其他函数一样,您无法访问用于向其中传递数据的变量名。也可能根本没有变量:

tag`Test ${"look, ma! No variables!"}`

获取变量名(如果有的话)并使用它的唯一方法是解析和操作代码,例如使用 babel。

于 2021-11-26T08:53:43.147 回答