使用没有函数参数的函数上下文/变量

问题描述

我正在尝试实现我自己的 template literals 功能(用于教育目的),但我无法理解它是如何工作的。

我的想法是用函数扩展 String.prototype,这将 eval 字符串中的每个 ${} 序列。问题是我的新函数不知道上下文(字符串中的变量)。以下是我认为它应该如何工作:

String.prototype.smart_eval = function() { /* find all ${} and eval them */ }

function some_function() {
  let a = 1;
  let b = 2;
  return 'A is ${a},B is ${b},the sum is ${a + b}'.smart_eval()
}

这将导致 Uncaught ReferenceError: a is not defined,因为 ab 属于 some_function(),而不是 smart_eval()。有没有不使用函数参数或 .call() / .apply() 的优雅方法来解决这个问题?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)