问题描述
我正在尝试实现我自己的 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
,因为 a
和 b
属于 some_function()
,而不是 smart_eval()
。有没有不使用函数参数或 .call()
/ .apply()
的优雅方法来解决这个问题?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)